From 4b2029c4407531b57ca7868c59141d5feb54ffb9 Mon Sep 17 00:00:00 2001 From: Hong Minhee Date: Thu, 17 Sep 2026 15:43:03 +0900 Subject: [PATCH 1/2] Add FEP-22cd translation metadata Represent per-language translator credit and source review timestamps with Translation values on ActivityStreams objects, targeting draft revision 6d0d6559054baeb7b71a5f2bdc14fc4c09b66f39. Activate the extension context only when needed so ordinary objects retain their existing serialization. Treat metadata identifiers as untrusted when resolving embedded translator actors. Add round-trip, actor resolution, legacy serialization, and signed-object regressions, and document multilingual publishing and review workflows. Include the preloaded context, all runtime snapshots, and changelog fragments. Fixes https://github.com/fedify-dev/fedify/issues/1037 Assisted-by: Codex:gpt-6-astra Assisted-by: Claude Code:claude-opus-5 --- CHANGES.md | 32 + FEDERATION.md | 4 + .../vocab-runtime/translation-context.md | 7 + changes.d/vocab-tools/conditional-contexts.md | 10 + changes.d/vocab/translation-metadata.md | 20 + docs/manual/pragmatics.md | 209 + docs/manual/vocab.md | 29 + packages/fedify/src/sig/proof.test.ts | 36 + .../src/fixtures/w3id.org/fep/22cd.json | 21 + packages/vocab-runtime/src/contexts.ts | 2 + .../vocab-runtime/src/contexts/fep-22cd.json | 21 + packages/vocab-tools/README.md | 18 + .../src/__snapshots__/class.test.ts.deno.snap | 3758 +++++++++++++++-- .../src/__snapshots__/class.test.ts.node.snap | 3758 +++++++++++++++-- .../src/__snapshots__/class.test.ts.snap | 3758 +++++++++++++++-- packages/vocab-tools/src/class.ts | 38 + packages/vocab-tools/src/codec.ts | 31 +- packages/vocab-tools/src/property.ts | 37 +- packages/vocab-tools/src/schema.ts | 16 + packages/vocab-tools/src/schema.yaml | 15 + .../src/__snapshots__/vocab.test.ts.snap | 294 +- packages/vocab/src/object.yaml | 15 + packages/vocab/src/translation.test.ts | 515 +++ packages/vocab/src/translation.yaml | 91 + packages/vocab/src/vocab.test.ts | 20 +- 25 files changed, 11780 insertions(+), 975 deletions(-) create mode 100644 changes.d/vocab-runtime/translation-context.md create mode 100644 changes.d/vocab-tools/conditional-contexts.md create mode 100644 changes.d/vocab/translation-metadata.md create mode 100644 packages/fixture/src/fixtures/w3id.org/fep/22cd.json create mode 100644 packages/vocab-runtime/src/contexts/fep-22cd.json create mode 100644 packages/vocab/src/translation.test.ts create mode 100644 packages/vocab/src/translation.yaml diff --git a/CHANGES.md b/CHANGES.md index c98fff2b9..a5304554d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -345,38 +345,60 @@ To be released. document/media classes expose `digestMultibase` for external resource integrity metadata. [[#830], [#928]] + - Updated [FEP-fe34] cross-origin checks to understand cryptographic origins for [FEP-ef61] portable ActivityPub IDs and DID URLs. Generated property accessors and `lookupObject()` now treat `ap:`/`ap+ef61:` IDs and matching `did:key` verification method IDs as same-origin when their DID components match. [[#829], [#926]] + - Added support for [FEP-ef61] portable ActivityPub IRIs in generated vocabulary codecs. `ap:` and `ap+ef61:` values with decoded or percent-encoded DID authorities now parse as `URL` objects, and JSON-LD serialization emits canonical `ap+ef61:` values with decoded DID authorities. [[#826], [#850]] + - Added vocabulary support for [FEP-7aa9], including `FeaturedCollection`, `FeaturedItem`, `FeatureRequest`, and `FeatureAuthorization`, plus actor `featuredCollections` and `InteractionPolicy.canFeature` properties. [[#810], [#914]] + - Added the `Endpoints.uploadMedia` property, the standard ActivityStreams endpoint for the [ActivityPub Media Upload extension]. [[#754], [#927]] + - Fixed the CommonJS vocabulary build so it no longer requires `@js-temporal/polyfill` at runtime. The build now bundles `temporal-polyfill`, while type declarations rely on the standard `esnext.temporal` lib reference. [[#823], [#925]] + - Added vocabulary support for the [FEP-22cd] draft, associating each + translated version with its translators, source object, and optional source + review timestamp. [[#1037], [#1038]] + + - Added `Translation` class with `id`, `language`, `original`, + `sourceUpdated`, `basis`, `url`, and `urls` properties. + - Added `Translation.getTranslator()`/`Translation.translatorId` and + `Translation.getTranslators()`/`Translation.translatorIds` for + accessing credited actors. The constructor accepts `translator` + and `translators` values. + - Added `Object.translations` property, inherited by `Article`, + `Note`, and other object types, for per-language translation + metadata without creating separate posts. + +[FEP-22cd]: https://w3id.org/fep/22cd [#810]: https://github.com/fedify-dev/fedify/issues/810 [#826]: https://github.com/fedify-dev/fedify/issues/826 [#830]: https://github.com/fedify-dev/fedify/issues/830 [#850]: https://github.com/fedify-dev/fedify/pull/850 [#914]: https://github.com/fedify-dev/fedify/pull/914 [#928]: https://github.com/fedify-dev/fedify/pull/928 +[#1037]: https://github.com/fedify-dev/fedify/issues/1037 +[#1038]: https://github.com/fedify-dev/fedify/pull/1038 ### @fedify/vocab-runtime @@ -415,6 +437,8 @@ To be released. error pages surface as document loading failures with the response URL and content type, rather than generic JSON parser crashes. [[#912], [#913]] + - Added to preloaded JSON-LD contexts. + [[#1037], [#1038]] [#828]: https://github.com/fedify-dev/fedify/issues/828 [#831]: https://github.com/fedify-dev/fedify/issues/831 @@ -423,6 +447,14 @@ To be released. [#924]: https://github.com/fedify-dev/fedify/pull/924 [#935]: https://github.com/fedify-dev/fedify/pull/935 +### @fedify/vocab-tools + + - Added the `extraContext` property schema option to include a JSON-LD + context only when its terms are used, preserving existing output for + objects without the extension. [[#1037], [#1038]] + - Added the `trustEmbeddedObjects` type schema option so embedded metadata + identifiers need not establish trust in linked actors. [[#1037], [#1038]] + Version 2.3.7 ------------- diff --git a/FEDERATION.md b/FEDERATION.md index ff8c9f568..353484669 100644 --- a/FEDERATION.md +++ b/FEDERATION.md @@ -38,6 +38,7 @@ Supported FEPs - [FEP-5711][]: Inverse Properties for Collections - [FEP-044f][]: Consent-respecting quote posts - [FEP-7aa9][]: Featuring recommendations using a dedicated collection + - [FEP-22cd][]: Attributing translations - [FEP-0837][]: Federated Marketplace - [FEP-ae0c][]: Fediverse Relay Protocols: Mastodon and LitePub @@ -55,6 +56,7 @@ Supported FEPs [FEP-5711]: https://w3id.org/fep/5711 [FEP-044f]: https://w3id.org/fep/044f [FEP-7aa9]: https://w3id.org/fep/7aa9 +[FEP-22cd]: https://w3id.org/fep/22cd [FEP-0837]: https://w3id.org/fep/0837 [FEP-ae0c]: https://w3id.org/fep/ae0c @@ -228,6 +230,7 @@ fediverse. - [`PropertyValue`] (Schema.org) - [`Relationship`] - [`Source`] + - [`Translation`] ([FEP-22cd]; embedded metadata) [`Emoji`]: https://jsr.io/@fedify/vocab/doc/~/Emoji [`Hashtag`]: https://jsr.io/@fedify/vocab/doc/~/Hashtag @@ -238,6 +241,7 @@ fediverse. [`PropertyValue`]: https://jsr.io/@fedify/vocab/doc/~/PropertyValue [`Relationship`]: https://jsr.io/@fedify/vocab/doc/~/Relationship [`Source`]: https://jsr.io/@fedify/vocab/doc/~/Source +[`Translation`]: https://jsr.io/@fedify/vocab/doc/~/Translation ### Cryptographic types diff --git a/changes.d/vocab-runtime/translation-context.md b/changes.d/vocab-runtime/translation-context.md new file mode 100644 index 000000000..97e8314d1 --- /dev/null +++ b/changes.d/vocab-runtime/translation-context.md @@ -0,0 +1,7 @@ +--- +links: + '#1037': https://github.com/fedify-dev/fedify/issues/1037 + '#1038': https://github.com/fedify-dev/fedify/pull/1038 +--- + - Added to preloaded JSON-LD contexts. + [[#1037], [#1038]] diff --git a/changes.d/vocab-tools/conditional-contexts.md b/changes.d/vocab-tools/conditional-contexts.md new file mode 100644 index 000000000..fb9712bd5 --- /dev/null +++ b/changes.d/vocab-tools/conditional-contexts.md @@ -0,0 +1,10 @@ +--- +links: + '#1037': https://github.com/fedify-dev/fedify/issues/1037 + '#1038': https://github.com/fedify-dev/fedify/pull/1038 +--- + - Added the `extraContext` property schema option to include a JSON-LD + context only when its terms are used, preserving existing output for + objects without the extension. [[#1037], [#1038]] + - Added the `trustEmbeddedObjects` type schema option so embedded metadata + identifiers need not establish trust in linked actors. [[#1037], [#1038]] diff --git a/changes.d/vocab/translation-metadata.md b/changes.d/vocab/translation-metadata.md new file mode 100644 index 000000000..7b7bcca0a --- /dev/null +++ b/changes.d/vocab/translation-metadata.md @@ -0,0 +1,20 @@ +--- +links: + '#1037': https://github.com/fedify-dev/fedify/issues/1037 + '#1038': https://github.com/fedify-dev/fedify/pull/1038 +--- + - Added vocabulary support for the [FEP-22cd] draft, associating each + translated version with its translators, source object, and optional source + review timestamp. [[#1037], [#1038]] + + - Added `Translation` class with `id`, `language`, `original`, + `sourceUpdated`, `basis`, `url`, and `urls` properties. + - Added `Translation.getTranslator()`/`Translation.translatorId` and + `Translation.getTranslators()`/`Translation.translatorIds` for + accessing credited actors. The constructor accepts `translator` + and `translators` values. + - Added `Object.translations` property, inherited by `Article`, + `Note`, and other object types, for per-language translation + metadata without creating separate posts. + +[FEP-22cd]: https://w3id.org/fep/22cd diff --git a/docs/manual/pragmatics.md b/docs/manual/pragmatics.md index 9d966b3fb..beb407c8a 100644 --- a/docs/manual/pragmatics.md +++ b/docs/manual/pragmatics.md @@ -569,6 +569,215 @@ Mastodon: ![Screenshot: An article object with a title, canonical link, and hashtag in Mastodon](pragmatics/mastodon-article.png) +### Translation metadata + +`Translation` records credit and source freshness for one translated language +in an object's `contentMap`, `nameMap`, or `summaryMap`. `Object.translations` +is an array of these entries, inherited by `Article`, `Note`, and other object +types. The text stays in the language maps. Every language shares the same +object ID, replies, and reactions. + +> [!WARNING] +> This implements [FEP-22cd]. +> The proposal may change. These APIs describe the draft's wire format; +> they do not make other servers display translation credits. Downstream +> applications should pin a Fedify revision containing this support when +> testing the draft. + +#### Publishing a translation + +An author translating their own article keeps their author attribution and +adds a separate credit for the translated language: + +~~~~ typescript twoslash +import { Article, LanguageString, Translation } from "@fedify/vocab"; + +const articleId = new URL("https://example.com/articles/1"); +const authorId = new URL("https://example.com/users/alice"); +const sourceUpdated = Temporal.Instant.from("2026-09-01T00:00:00Z"); +const article = new Article({ + id: articleId, + attribution: authorId, + updated: sourceUpdated, + contents: [ + "Original text", // Untagged fallback for readers without language selection. + new LanguageString("Original text", "en"), + new LanguageString("번역문", "ko"), + ], + translations: [ + new Translation({ + language: new Intl.Locale("ko"), + translator: authorId, + original: articleId, + sourceUpdated, + url: new URL("https://example.com/articles/1/ko"), + }), + ], +}); + +const json = await article.toJsonLd(); +~~~~ + +Fedify adds the preloaded `https://w3id.org/fep/22cd` context when translation +metadata needs it. Objects without this metadata keep their existing output. +If you supply an explicit context to +`toJsonLd({ format: "compact", context: ... })`, include the FEP context to get +its compact term names. + +| Property | Value | Meaning | +| --------------- | ----------------------- | ------------------------------------------------------ | +| `language` | `Intl.Locale` | Language of this translation. | +| `translators` | Actor objects or `URL`s | One or more translators or reviewers, in no set order. | +| `original` | `URL` | ID of the containing object. | +| `sourceUpdated` | `Temporal.Instant` | Source timestamp at the last human review. | +| `basis` | `URL` | Optional public revision resource used for the review. | +| `urls` | `URL`s or `Link`s | Optional links to this language's rendering. | + +The constructor also accepts singular `translator` and `url` values. The FEP +requires `inLanguage` (`language` in Fedify), at least one translator, and +`translationOfWork` (`original` in Fedify). +Applications must check that the language matches their language maps and that +`original` matches the containing object. As with other vocabulary +classes, Fedify does not enforce these relationships or required fields. +Invalid language tags or timestamps can make `fromJsonLd()` reject the whole +containing object; applications should handle parsing errors at their normal +input boundary. + +A directly authored language has no `Translation` entry. A metadata entry may +have an `id`, but Fedify does not dereference it. It is not a separate target +for `Create`, `Update`, or `Delete`. + +#### Different translators in an organization + +Credit each language separately while keeping the organization as the +article's author: + +~~~~ typescript twoslash +import { Article, LanguageString, Translation } from "@fedify/vocab"; + +const id = new URL("https://example.com/articles/2"); +const updated = Temporal.Instant.from("2026-09-10T00:00:00Z"); +const article = new Article({ + id, + attribution: new URL("https://example.com/orgs/acme"), + updated, + contents: [ + new LanguageString("Original", "en"), + new LanguageString("日本語版", "ja"), + new LanguageString("한국어판", "ko"), + ], + translations: [ + new Translation({ + language: new Intl.Locale("ja"), + translator: new URL("https://example.com/users/bob"), + original: id, + sourceUpdated: updated, + }), + new Translation({ + language: new Intl.Locale("ko"), + translators: [ + new URL("https://example.com/actors/translation-service"), + new URL("https://example.com/users/carol"), + ], + original: id, + sourceUpdated: updated, + }), + ], +}); +~~~~ + +Here the Korean entry credits both an `Application` that produced machine +output and a `Person` who reviewed it. Carol's presence credits review, not +unaided translation. Unreviewed machine output should credit only the +software actor and omit the human-review timestamp. + +#### Source edits and review acknowledgements + +Compare a translation's `sourceUpdated` with the source's `updated`, or +`published` when `updated` is absent. An earlier value means potentially +stale; an equal or later value reflects the current source. If either the +translation's baseline or the source's reference timestamp is absent, freshness +is unknown. + +A source edit leaves the translations' existing baselines intact. A subsequent +human review can advance one baseline without changing its text: + +~~~~ typescript twoslash +import { Article, Update } from "@fedify/vocab"; +declare const article: Article; +declare const authorizedPublisher: URL; +// ---cut-before--- +const edited = article.clone({ + updated: Temporal.Instant.from("2026-09-15T00:00:00Z"), +}); +// After a human reviews the Korean translation against this source: +const reviewed = edited.clone({ + translations: edited.translations.map((translation) => + translation.language?.baseName === "ko" + ? translation.clone({ sourceUpdated: edited.updated }) + : translation + ), +}); +const update = new Update({ + id: new URL("https://example.com/activities/review-123"), + actor: authorizedPublisher, + object: reviewed, +}); +~~~~ + +The server-to-server `Update` carries the full current object, including +unchanged language maps and the other translations. To withdraw a language, +remove both its text and its metadata entry in that update. This full-state +replacement rule does not apply to client-to-server partial updates. + +#### Reading credit safely + +`translation.translatorIds` preserves actor references even when the accounts +are unavailable. `getTranslator()` and `getTranslators()` use the usual +[origin checks](./vocab.md#same-origin-policy-for-properties). A translation's +metadata ID does not establish trust in embedded actors: actors with IDs are +fetched unless the application explicitly trusts them or supplied them locally. + +To classify a translation as human, machine, or reviewed, resolve *all* +credited actors. The plural accessor +can skip deleted, unavailable, or refused actors, so do not classify only the +successful results or use the singular accessor for this purpose: + +~~~~ typescript twoslash +import { Application, Service, Translation } from "@fedify/vocab"; +declare const translation: Translation; +// ---cut-before--- +const ids = translation.translatorIds; +const actors = await Array.fromAsync( + translation.getTranslators({ suppressError: true }), +); +let credit: "unknown" | "human" | "machine" | "reviewed" = "unknown"; +if ( + actors.length > 0 && actors.length >= ids.length && + actors.every((actor) => actor.id != null) +) { + const machineCount = actors.filter((actor) => + actor instanceof Application || actor instanceof Service + ).length; + credit = machineCount === 0 + ? "human" + : machineCount === actors.length + ? "machine" + : "reviewed"; +} +~~~~ + +Without `suppressError`, a failed lookup may throw; treat that result as +unknown as well. An actor without an ID cannot be dereferenced, so its asserted +type cannot establish the classification. + +Translator credit is a claim made by the publishing server. Neither this +credit nor `attributedTo` grants an actor permission to update or delete the +article. Keep your existing publishing authorization and signature checks; +parsing these fields does not verify the credit or authorize an activity. + +[FEP-22cd]: https://w3id.org/fep/22cd + ### `Question`: Polls The `Question` type is used for polls. In Mastodon, the question body comes diff --git a/docs/manual/vocab.md b/docs/manual/vocab.md index 4cd389521..d92bc1768 100644 --- a/docs/manual/vocab.md +++ b/docs/manual/vocab.md @@ -159,7 +159,9 @@ property. > | [`hasNumericalValue`] | `Measure.numericalValue` | > | [`hasUnit`] | `Measure.unit` | > | [`hreflang`] | `Link.language` | +> | [`inLanguage`] | `Translation.language` | > | [`inReplyTo`] | `Object.getReplyTargets()` | +> | [`isBasedOn`] | `Translation.basis` | > | [`isCat`] | `Application.cat`/`Group.cat`/`Organization.cat`/`Person.cat`/`Service.cat` | > | [`movedTo`] | `Application.getSuccessor()`/`Group.getSuccessor()`/`Organization.getSuccessor()`/`Person.getSuccessor()`/`Service.getSuccessor()` | > | [`oneOf`] | `Question.getExclusiveOptions()` | @@ -167,6 +169,7 @@ property. > | [`publicKeyMultibase`] | `Multikey.publicKey` | > | [`publicKeyPem`] | `CryptographicKey.publicKey` | > | [`quoteUri`] | `Article.quoteUrl`/`ChatMessage.quoteUrl`/`Note.quoteUrl`/`Question.quoteUrl` | +> | [`translationOfWork`] | `Translation.original` | > | [`votersCount`] | `Question.voters` | > | [`_misskey_followedMessage`] | `Application.followedMessage`/`Group.followedMessage`/`Organization.followedMessage`/`Person.followedMessage`/`Service.followedMessage` | > | [`_misskey_quote`] | `Article.quoteUrl`/`ChatMessage.quoteUrl`/`Note.quoteUrl`/`Question.quoteUrl` | @@ -190,7 +193,9 @@ property. [`hasNumericalValue`]: http://www.ontology-of-units-of-measure.org/resource/om-2/hasNumericalValue [`hasUnit`]: http://www.ontology-of-units-of-measure.org/resource/om-2/hasUnit [`hreflang`]: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-hreflang +[`inLanguage`]: https://schema.org/inLanguage [`inReplyTo`]: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-inreplyto +[`isBasedOn`]: https://schema.org/isBasedOn [`isCat`]: https://misskey-hub.net/ns#iscat [`movedTo`]: https://swicg.github.io/miscellany/#movedTo [`oneOf`]: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-oneof @@ -198,6 +203,7 @@ property. [`publicKeyMultibase`]: https://www.w3.org/TR/controller-document/#dfn-publickeymultibase [`publicKeyPem`]: https://web.archive.org/web/20221218063101/https://web-payments.org/vocabs/security#publicKey [`quoteUri`]: https://github.com/fedibird/mastodon?tab=readme-ov-file#quotes +[`translationOfWork`]: https://schema.org/translationOfWork [`votersCount`]: https://docs.joinmastodon.org/spec/activitypub/#poll-specific-properties [`_misskey_followedMessage`]: https://misskey-hub.net/ns#_misskey_followedmessage [`_misskey_quote`]: https://misskey-hub.net/ns#_misskey_quote @@ -709,6 +715,29 @@ The same rule applies to cryptographic origins. For example, `did:key:zAlice` origin, but `ap+ef61://did:key:zBob/actor` is a different origin. +### Metadata identifiers + +*This exception is applicable since Fedify 2.4.0.* + +An embedded metadata value's ID does not always establish trust in its +properties. Types whose vocabulary schema sets `trustEmbeddedObjects: false`, +such as `Translation`, can carry an ID without identifying an independently +fetched resource. Using that ID for same-origin trust would let a publisher +choose an ID that makes a forged embedded actor appear trustworthy. + +For these types, accessors for their own entity-valued properties fetch +untrusted embedded objects with IDs even when those IDs share the metadata +value's origin. This does not +cause the metadata value itself to be fetched. Values supplied locally or +already trusted through fetching remain trusted, and `crossOrigin: "trust"` +explicitly bypasses the check. Objects without IDs cannot be fetched, so their +embedded data is not independently verified by these checks. + +`trustEmbeddedObjects` is a vocabulary schema setting, not a runtime accessor +option. See the +[translation credit example](./pragmatics.md#reading-credit-safely) for how to +handle unresolved or unverified actors. + ### Controlling origin checks You can control this behavior using the `crossOrigin` option when calling diff --git a/packages/fedify/src/sig/proof.test.ts b/packages/fedify/src/sig/proof.test.ts index e45862881..c2b99969b 100644 --- a/packages/fedify/src/sig/proof.test.ts +++ b/packages/fedify/src/sig/proof.test.ts @@ -13,6 +13,7 @@ import { Note, Place, PUBLIC_COLLECTION, + Translation, } from "@fedify/vocab"; import { decodeMultibase, @@ -2590,3 +2591,38 @@ test("verifyObject() rejects did:key proofs from another portable attribution or null, ); }); + +test("signObject() preserves FEP-22cd contexts through proof verification", async () => { + const did = await exportDidKey(ed25519PublicKey.publicKey); + const keyId = new URL(`${did}#${did.substring("did:key:".length)}`); + const id = parseIri(`ap://${did}/objects/translation`); + const note = new Note({ + id, + attribution: parseIri(`ap://${did}/actor`), + content: "A translated note", + translations: [ + new Translation({ + language: new Intl.Locale("ko"), + translator: new URL("https://example.com/translator"), + original: id, + }), + ], + }); + const signed = await signObject(note, ed25519PrivateKey, keyId); + const json = await signed.toJsonLd({ format: "compact" }); + assert( + typeof json === "object" && json != null && "@context" in json && + "proof" in json, + ); + assertEquals( + (json.proof as Record)["@context"], + json["@context"], + ); + const verified = await verifyObject(Note, json, { + documentLoader() { + throw new Error("No document fetch expected"); + }, + }); + assertInstanceOf(verified, Note); + assertEquals(verified.translations[0].language?.baseName, "ko"); +}); diff --git a/packages/fixture/src/fixtures/w3id.org/fep/22cd.json b/packages/fixture/src/fixtures/w3id.org/fep/22cd.json new file mode 100644 index 000000000..e9a54dfb8 --- /dev/null +++ b/packages/fixture/src/fixtures/w3id.org/fep/22cd.json @@ -0,0 +1,21 @@ +{ + "@context": { + "fep-22cd": "https://w3id.org/fep/22cd#", + "schema": "https://schema.org/", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "translations": { "@id": "fep-22cd:translations", "@container": "@set" }, + "Translation": "fep-22cd:Translation", + "sourceUpdated": { + "@id": "fep-22cd:sourceUpdated", + "@type": "xsd:dateTime" + }, + "translator": { + "@id": "schema:translator", + "@type": "@id", + "@container": "@set" + }, + "inLanguage": "schema:inLanguage", + "translationOfWork": { "@id": "schema:translationOfWork", "@type": "@id" }, + "isBasedOn": { "@id": "schema:isBasedOn", "@type": "@id" } + } +} diff --git a/packages/vocab-runtime/src/contexts.ts b/packages/vocab-runtime/src/contexts.ts index 81b959da4..9e2f7a2c9 100644 --- a/packages/vocab-runtime/src/contexts.ts +++ b/packages/vocab-runtime/src/contexts.ts @@ -7,6 +7,7 @@ import activitystreams from "./contexts/activitystreams.json" with { }; import cidV1Context from "./contexts/cid-v1.json" with { type: "json" }; import didV1 from "./contexts/did-v1.json" with { type: "json" }; +import fep22cd from "./contexts/fep-22cd.json" with { type: "json" }; import fep5711 from "./contexts/fep-5711.json" with { type: "json" }; import fep7aa9 from "./contexts/fep-7aa9.json" with { type: "json" }; import fepEf61 from "./contexts/fep-ef61.json" with { type: "json" }; @@ -38,6 +39,7 @@ const preloadedContexts: Record = { "https://purl.archive.org/socialweb/webfinger": webfinger, "http://schema.org/": schemaorg, "https://gotosocial.org/ns": gotosocial, + "https://w3id.org/fep/22cd": fep22cd, "https://w3id.org/fep/5711": fep5711, "https://w3id.org/fep/7aa9": fep7aa9, diff --git a/packages/vocab-runtime/src/contexts/fep-22cd.json b/packages/vocab-runtime/src/contexts/fep-22cd.json new file mode 100644 index 000000000..e9a54dfb8 --- /dev/null +++ b/packages/vocab-runtime/src/contexts/fep-22cd.json @@ -0,0 +1,21 @@ +{ + "@context": { + "fep-22cd": "https://w3id.org/fep/22cd#", + "schema": "https://schema.org/", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "translations": { "@id": "fep-22cd:translations", "@container": "@set" }, + "Translation": "fep-22cd:Translation", + "sourceUpdated": { + "@id": "fep-22cd:sourceUpdated", + "@type": "xsd:dateTime" + }, + "translator": { + "@id": "schema:translator", + "@type": "@id", + "@container": "@set" + }, + "inLanguage": "schema:inLanguage", + "translationOfWork": { "@id": "schema:translationOfWork", "@type": "@id" }, + "isBasedOn": { "@id": "schema:isBasedOn", "@type": "@id" } + } +} diff --git a/packages/vocab-tools/README.md b/packages/vocab-tools/README.md index e45226d54..5d0ddc814 100644 --- a/packages/vocab-tools/README.md +++ b/packages/vocab-tools/README.md @@ -46,3 +46,21 @@ mise run test:update_snapshots Review and commit every changed snapshot file. Updating only one runtime leaves the other test suites with stale expectations. + + +Conditional contexts and metadata trust +--------------------------------------- + +A property schema can set `extraContext` to a context URL. The generated +serializer adds it to its default context when the property's expanded IRI +appears after compaction, including inside nested objects. A caller-provided +context takes precedence. When populated, such a property uses the JSON-LD +processor so context container rules, including `@set`, are respected. + +A type schema can set `trustEmbeddedObjects: false` when its identifier is +metadata rather than a resource that establishes an origin. Its own +entity-valued accessors then fetch embedded objects with identifiers instead +of trusting a matching origin. Locally constructed values, previously fetched +values, and the explicit `crossOrigin: "trust"` option retain their usual +behavior. This does not verify id-less embedded objects or establish publishing +authority. diff --git a/packages/vocab-tools/src/__snapshots__/class.test.ts.deno.snap b/packages/vocab-tools/src/__snapshots__/class.test.ts.deno.snap index 0f3c88262..000a5ab27 100644 --- a/packages/vocab-tools/src/__snapshots__/class.test.ts.deno.snap +++ b/packages/vocab-tools/src/__snapshots__/class.test.ts.deno.snap @@ -48,9 +48,34 @@ function isValidLanguageTag(language: string): boolean { } } +const extraPropertyContexts: Readonly> = + {\\"https://schema.org/translator\\":\\"https://w3id.org/fep/22cd\\",\\"https://w3id.org/fep/22cd#translations\\":\\"https://w3id.org/fep/22cd\\"}; + +function getExtraContexts(document: unknown): string[] { + const contexts = new Set(); + const pending: unknown[] = [document]; + while (pending.length > 0) { + const value = pending.pop(); + if (value == null || typeof value !== \\"object\\") continue; + if (Array.isArray(value)) { + for (const item of value) pending.push(item); + continue; + } + if (\\"@value\\" in value) continue; + for (const [key, child] of globalThis.Object.entries(value)) { + if (key === \\"@context\\") continue; + if (globalThis.Object.hasOwn(extraPropertyContexts, key)) { + contexts.add(extraPropertyContexts[key]); + } + pending.push(child); + } + } + return [...contexts]; +} + const PORTABLE_IRI_PATTERN = /^ap(?:\\\\+ef61)?:\\\\/\\\\//i; -const PORTABLE_IRI_KEYS: ReadonlySet = new Set([\\"@id\\",\\"_misskey_quote\\",\\"actor\\",\\"alsoKnownAs\\",\\"announceAuthorization\\",\\"anyOf\\",\\"approvedBy\\",\\"assertionMethod\\",\\"attachment\\",\\"attributedTo\\",\\"audience\\",\\"automaticApproval\\",\\"bcc\\",\\"bto\\",\\"cc\\",\\"context\\",\\"controller\\",\\"current\\",\\"describes\\",\\"emojiReactions\\",\\"featureAuthorization\\",\\"featured\\",\\"featuredCollections\\",\\"featuredObject\\",\\"featuredTags\\",\\"first\\",\\"followers\\",\\"followersOf\\",\\"following\\",\\"followingOf\\",\\"generator\\",\\"href\\",\\"http://fedibird.com/ns#emojiReactions\\",\\"http://fedibird.com/ns#quoteUri\\",\\"http://joinmastodon.org/ns#featured\\",\\"http://joinmastodon.org/ns#featuredTags\\",\\"http://www.w3.org/ns/ldp#inbox\\",\\"https://gotosocial.org/ns#announceAuthorization\\",\\"https://gotosocial.org/ns#approvedBy\\",\\"https://gotosocial.org/ns#automaticApproval\\",\\"https://gotosocial.org/ns#interactingObject\\",\\"https://gotosocial.org/ns#interactionTarget\\",\\"https://gotosocial.org/ns#likeAuthorization\\",\\"https://gotosocial.org/ns#manualApproval\\",\\"https://gotosocial.org/ns#replyAuthorization\\",\\"https://misskey-hub.net/ns#_misskey_quote\\",\\"https://w3id.org/fep/044f#quote\\",\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"https://w3id.org/fep/5711#followersOf\\",\\"https://w3id.org/fep/5711#followingOf\\",\\"https://w3id.org/fep/5711#inboxOf\\",\\"https://w3id.org/fep/5711#likedOf\\",\\"https://w3id.org/fep/5711#likesOf\\",\\"https://w3id.org/fep/5711#outboxOf\\",\\"https://w3id.org/fep/5711#repliesOf\\",\\"https://w3id.org/fep/5711#sharesOf\\",\\"https://w3id.org/fep/7aa9#featureAuthorization\\",\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"https://w3id.org/fep/7aa9#featuredObject\\",\\"https://w3id.org/security#assertionMethod\\",\\"https://w3id.org/security#controller\\",\\"https://w3id.org/security#owner\\",\\"https://w3id.org/security#proof\\",\\"https://w3id.org/security#publicKey\\",\\"https://w3id.org/security#verificationMethod\\",\\"https://w3id.org/valueflows/ont/vf#resourceConformsTo\\",\\"https://w3id.org/valueflows/ont/vf#satisfies\\",\\"https://www.w3.org/ns/activitystreams#actor\\",\\"https://www.w3.org/ns/activitystreams#alsoKnownAs\\",\\"https://www.w3.org/ns/activitystreams#anyOf\\",\\"https://www.w3.org/ns/activitystreams#attachment\\",\\"https://www.w3.org/ns/activitystreams#attributedTo\\",\\"https://www.w3.org/ns/activitystreams#audience\\",\\"https://www.w3.org/ns/activitystreams#bcc\\",\\"https://www.w3.org/ns/activitystreams#bto\\",\\"https://www.w3.org/ns/activitystreams#cc\\",\\"https://www.w3.org/ns/activitystreams#context\\",\\"https://www.w3.org/ns/activitystreams#current\\",\\"https://www.w3.org/ns/activitystreams#describes\\",\\"https://www.w3.org/ns/activitystreams#first\\",\\"https://www.w3.org/ns/activitystreams#followers\\",\\"https://www.w3.org/ns/activitystreams#following\\",\\"https://www.w3.org/ns/activitystreams#generator\\",\\"https://www.w3.org/ns/activitystreams#href\\",\\"https://www.w3.org/ns/activitystreams#icon\\",\\"https://www.w3.org/ns/activitystreams#image\\",\\"https://www.w3.org/ns/activitystreams#inReplyTo\\",\\"https://www.w3.org/ns/activitystreams#instrument\\",\\"https://www.w3.org/ns/activitystreams#items\\",\\"https://www.w3.org/ns/activitystreams#last\\",\\"https://www.w3.org/ns/activitystreams#liked\\",\\"https://www.w3.org/ns/activitystreams#likes\\",\\"https://www.w3.org/ns/activitystreams#location\\",\\"https://www.w3.org/ns/activitystreams#movedTo\\",\\"https://www.w3.org/ns/activitystreams#next\\",\\"https://www.w3.org/ns/activitystreams#oauthAuthorizationEndpoint\\",\\"https://www.w3.org/ns/activitystreams#oauthTokenEndpoint\\",\\"https://www.w3.org/ns/activitystreams#object\\",\\"https://www.w3.org/ns/activitystreams#oneOf\\",\\"https://www.w3.org/ns/activitystreams#origin\\",\\"https://www.w3.org/ns/activitystreams#outbox\\",\\"https://www.w3.org/ns/activitystreams#partOf\\",\\"https://www.w3.org/ns/activitystreams#prev\\",\\"https://www.w3.org/ns/activitystreams#preview\\",\\"https://www.w3.org/ns/activitystreams#provideClientKey\\",\\"https://www.w3.org/ns/activitystreams#proxyUrl\\",\\"https://www.w3.org/ns/activitystreams#quoteUrl\\",\\"https://www.w3.org/ns/activitystreams#relationship\\",\\"https://www.w3.org/ns/activitystreams#replies\\",\\"https://www.w3.org/ns/activitystreams#result\\",\\"https://www.w3.org/ns/activitystreams#sharedInbox\\",\\"https://www.w3.org/ns/activitystreams#shares\\",\\"https://www.w3.org/ns/activitystreams#signClientKey\\",\\"https://www.w3.org/ns/activitystreams#streams\\",\\"https://www.w3.org/ns/activitystreams#subject\\",\\"https://www.w3.org/ns/activitystreams#tag\\",\\"https://www.w3.org/ns/activitystreams#target\\",\\"https://www.w3.org/ns/activitystreams#to\\",\\"https://www.w3.org/ns/activitystreams#units\\",\\"https://www.w3.org/ns/activitystreams#uploadMedia\\",\\"https://www.w3.org/ns/activitystreams#url\\",\\"https://www.w3.org/ns/did#service\\",\\"https://www.w3.org/ns/did#serviceEndpoint\\",\\"icon\\",\\"id\\",\\"image\\",\\"inReplyTo\\",\\"inbox\\",\\"inboxOf\\",\\"instrument\\",\\"interactingObject\\",\\"interactionTarget\\",\\"items\\",\\"last\\",\\"likeAuthorization\\",\\"liked\\",\\"likedOf\\",\\"likes\\",\\"likesOf\\",\\"location\\",\\"manualApproval\\",\\"movedTo\\",\\"next\\",\\"oauthAuthorizationEndpoint\\",\\"oauthTokenEndpoint\\",\\"object\\",\\"oneOf\\",\\"orderedItems\\",\\"origin\\",\\"outbox\\",\\"outboxOf\\",\\"owner\\",\\"partOf\\",\\"prev\\",\\"preview\\",\\"proof\\",\\"provideClientKey\\",\\"proxyUrl\\",\\"publicKey\\",\\"quote\\",\\"quoteAuthorization\\",\\"quoteUri\\",\\"quoteUrl\\",\\"relationship\\",\\"replies\\",\\"repliesOf\\",\\"replyAuthorization\\",\\"resourceConformsTo\\",\\"result\\",\\"satisfies\\",\\"service\\",\\"sharedInbox\\",\\"shares\\",\\"sharesOf\\",\\"signClientKey\\",\\"streams\\",\\"subject\\",\\"tag\\",\\"target\\",\\"to\\",\\"units\\",\\"uploadMedia\\",\\"url\\"]); +const PORTABLE_IRI_KEYS: ReadonlySet = new Set([\\"@id\\",\\"_misskey_quote\\",\\"actor\\",\\"alsoKnownAs\\",\\"announceAuthorization\\",\\"anyOf\\",\\"approvedBy\\",\\"assertionMethod\\",\\"attachment\\",\\"attributedTo\\",\\"audience\\",\\"automaticApproval\\",\\"bcc\\",\\"bto\\",\\"cc\\",\\"context\\",\\"controller\\",\\"current\\",\\"describes\\",\\"emojiReactions\\",\\"featureAuthorization\\",\\"featured\\",\\"featuredCollections\\",\\"featuredObject\\",\\"featuredTags\\",\\"first\\",\\"followers\\",\\"followersOf\\",\\"following\\",\\"followingOf\\",\\"generator\\",\\"href\\",\\"http://fedibird.com/ns#emojiReactions\\",\\"http://fedibird.com/ns#quoteUri\\",\\"http://joinmastodon.org/ns#featured\\",\\"http://joinmastodon.org/ns#featuredTags\\",\\"http://www.w3.org/ns/ldp#inbox\\",\\"https://gotosocial.org/ns#announceAuthorization\\",\\"https://gotosocial.org/ns#approvedBy\\",\\"https://gotosocial.org/ns#automaticApproval\\",\\"https://gotosocial.org/ns#interactingObject\\",\\"https://gotosocial.org/ns#interactionTarget\\",\\"https://gotosocial.org/ns#likeAuthorization\\",\\"https://gotosocial.org/ns#manualApproval\\",\\"https://gotosocial.org/ns#replyAuthorization\\",\\"https://misskey-hub.net/ns#_misskey_quote\\",\\"https://schema.org/isBasedOn\\",\\"https://schema.org/translationOfWork\\",\\"https://schema.org/translator\\",\\"https://w3id.org/fep/044f#quote\\",\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"https://w3id.org/fep/5711#followersOf\\",\\"https://w3id.org/fep/5711#followingOf\\",\\"https://w3id.org/fep/5711#inboxOf\\",\\"https://w3id.org/fep/5711#likedOf\\",\\"https://w3id.org/fep/5711#likesOf\\",\\"https://w3id.org/fep/5711#outboxOf\\",\\"https://w3id.org/fep/5711#repliesOf\\",\\"https://w3id.org/fep/5711#sharesOf\\",\\"https://w3id.org/fep/7aa9#featureAuthorization\\",\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"https://w3id.org/fep/7aa9#featuredObject\\",\\"https://w3id.org/security#assertionMethod\\",\\"https://w3id.org/security#controller\\",\\"https://w3id.org/security#owner\\",\\"https://w3id.org/security#proof\\",\\"https://w3id.org/security#publicKey\\",\\"https://w3id.org/security#verificationMethod\\",\\"https://w3id.org/valueflows/ont/vf#resourceConformsTo\\",\\"https://w3id.org/valueflows/ont/vf#satisfies\\",\\"https://www.w3.org/ns/activitystreams#actor\\",\\"https://www.w3.org/ns/activitystreams#alsoKnownAs\\",\\"https://www.w3.org/ns/activitystreams#anyOf\\",\\"https://www.w3.org/ns/activitystreams#attachment\\",\\"https://www.w3.org/ns/activitystreams#attributedTo\\",\\"https://www.w3.org/ns/activitystreams#audience\\",\\"https://www.w3.org/ns/activitystreams#bcc\\",\\"https://www.w3.org/ns/activitystreams#bto\\",\\"https://www.w3.org/ns/activitystreams#cc\\",\\"https://www.w3.org/ns/activitystreams#context\\",\\"https://www.w3.org/ns/activitystreams#current\\",\\"https://www.w3.org/ns/activitystreams#describes\\",\\"https://www.w3.org/ns/activitystreams#first\\",\\"https://www.w3.org/ns/activitystreams#followers\\",\\"https://www.w3.org/ns/activitystreams#following\\",\\"https://www.w3.org/ns/activitystreams#generator\\",\\"https://www.w3.org/ns/activitystreams#href\\",\\"https://www.w3.org/ns/activitystreams#icon\\",\\"https://www.w3.org/ns/activitystreams#image\\",\\"https://www.w3.org/ns/activitystreams#inReplyTo\\",\\"https://www.w3.org/ns/activitystreams#instrument\\",\\"https://www.w3.org/ns/activitystreams#items\\",\\"https://www.w3.org/ns/activitystreams#last\\",\\"https://www.w3.org/ns/activitystreams#liked\\",\\"https://www.w3.org/ns/activitystreams#likes\\",\\"https://www.w3.org/ns/activitystreams#location\\",\\"https://www.w3.org/ns/activitystreams#movedTo\\",\\"https://www.w3.org/ns/activitystreams#next\\",\\"https://www.w3.org/ns/activitystreams#oauthAuthorizationEndpoint\\",\\"https://www.w3.org/ns/activitystreams#oauthTokenEndpoint\\",\\"https://www.w3.org/ns/activitystreams#object\\",\\"https://www.w3.org/ns/activitystreams#oneOf\\",\\"https://www.w3.org/ns/activitystreams#origin\\",\\"https://www.w3.org/ns/activitystreams#outbox\\",\\"https://www.w3.org/ns/activitystreams#partOf\\",\\"https://www.w3.org/ns/activitystreams#prev\\",\\"https://www.w3.org/ns/activitystreams#preview\\",\\"https://www.w3.org/ns/activitystreams#provideClientKey\\",\\"https://www.w3.org/ns/activitystreams#proxyUrl\\",\\"https://www.w3.org/ns/activitystreams#quoteUrl\\",\\"https://www.w3.org/ns/activitystreams#relationship\\",\\"https://www.w3.org/ns/activitystreams#replies\\",\\"https://www.w3.org/ns/activitystreams#result\\",\\"https://www.w3.org/ns/activitystreams#sharedInbox\\",\\"https://www.w3.org/ns/activitystreams#shares\\",\\"https://www.w3.org/ns/activitystreams#signClientKey\\",\\"https://www.w3.org/ns/activitystreams#streams\\",\\"https://www.w3.org/ns/activitystreams#subject\\",\\"https://www.w3.org/ns/activitystreams#tag\\",\\"https://www.w3.org/ns/activitystreams#target\\",\\"https://www.w3.org/ns/activitystreams#to\\",\\"https://www.w3.org/ns/activitystreams#units\\",\\"https://www.w3.org/ns/activitystreams#uploadMedia\\",\\"https://www.w3.org/ns/activitystreams#url\\",\\"https://www.w3.org/ns/did#service\\",\\"https://www.w3.org/ns/did#serviceEndpoint\\",\\"icon\\",\\"id\\",\\"image\\",\\"inReplyTo\\",\\"inbox\\",\\"inboxOf\\",\\"instrument\\",\\"interactingObject\\",\\"interactionTarget\\",\\"isBasedOn\\",\\"items\\",\\"last\\",\\"likeAuthorization\\",\\"liked\\",\\"likedOf\\",\\"likes\\",\\"likesOf\\",\\"location\\",\\"manualApproval\\",\\"movedTo\\",\\"next\\",\\"oauthAuthorizationEndpoint\\",\\"oauthTokenEndpoint\\",\\"object\\",\\"oneOf\\",\\"orderedItems\\",\\"origin\\",\\"outbox\\",\\"outboxOf\\",\\"owner\\",\\"partOf\\",\\"prev\\",\\"preview\\",\\"proof\\",\\"provideClientKey\\",\\"proxyUrl\\",\\"publicKey\\",\\"quote\\",\\"quoteAuthorization\\",\\"quoteUri\\",\\"quoteUrl\\",\\"relationship\\",\\"replies\\",\\"repliesOf\\",\\"replyAuthorization\\",\\"resourceConformsTo\\",\\"result\\",\\"satisfies\\",\\"service\\",\\"sharedInbox\\",\\"shares\\",\\"sharesOf\\",\\"signClientKey\\",\\"streams\\",\\"subject\\",\\"tag\\",\\"target\\",\\"to\\",\\"translationOfWork\\",\\"translator\\",\\"units\\",\\"uploadMedia\\",\\"url\\"]); import * as _ppM0 from \\"./preprocessors.ts\\"; @@ -211,7 +236,8 @@ export class Object { #_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization: (AnnounceAuthorization | URL)[] = []; #_trust_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization: Set = new Set(); - + #_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations: (Translation)[] = []; + /** * Constructs a new instance of Object with the given values. * @param values The values to initialize the instance with. @@ -237,7 +263,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -1184,6 +1210,21 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu ); } } + + if (\\"translations\\" in values && values.translations != null) { + + if (Array.isArray(values.translations) && + values.translations.every(v => v instanceof Translation)) { + // @ts-ignore: type is checked above. + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = values.translations; + + } else { + throw new TypeError( + \\"The translations must be an array of type \\" + + \\"Translation\\" + \\".\\", + ); + } + } } /** @@ -1212,7 +1253,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -2171,6 +2212,21 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu ); } } + clone.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + if (\\"translations\\" in values && values.translations != null) { + + if (Array.isArray(values.translations) && + values.translations.every(v => v instanceof Translation)) { + // @ts-ignore: type is checked above. + clone.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = values.translations; + + } else { + throw new TypeError( + \\"The translations must be an array of type \\" + + \\"Translation\\" + \\".\\", + ); + } + } return clone; } @@ -9155,6 +9211,18 @@ get urls(): ((URL | Link))[] { return v; } +/** Translation metadata for the language versions in this object's content, + * name, or summary maps, as defined by the draft + * [FEP-22cd](https://w3id.org/fep/22cd). Each entry describes one translated + * language; directly authored languages have no entry. The entries share + * this object's identity, replies, and reactions. Translator credit grants + * no authority to update the object. + * + */ +get translations(): (Translation)[] { + return this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + } + /** * Converts this object to a JSON-LD structure. * @param options The options to use. @@ -9942,6 +10010,26 @@ get urls(): ((URL | Link))[] { } + compactItems = []; + for (const v of this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations) { + const item = ( + await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"translations\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + result[\\"type\\"] = \\"Object\\"; if (this.id != null) result[\\"id\\"] = formatIri(this.id); result[\\"@context\\"] = [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; @@ -10715,6 +10803,26 @@ get urls(): ((URL | Link))[] { } + array = []; + for (const v of this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations) { + let element = ( + await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://w3id.org/fep/22cd#translations\\"] = propValue; + + } + values[\\"@type\\"] = [\\"https://www.w3.org/ns/activitystreams#Object\\"]; if (this.id != null) values[\\"@id\\"] = formatIri(this.id); if (options.format === \\"expand\\") { @@ -10726,13 +10834,27 @@ get urls(): ((URL | Link))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -10778,6 +10900,11 @@ get urls(): ((URL | Link))[] { this.#_2MHQfh2N74MMmDLDqYWFo7TxYQK2_interactionPolicy.length > 0 ) return false; + if ( + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations != null && + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 0 + ) return false; + return true; } @@ -12690,6 +12817,38 @@ get urls(): ((URL | Link))[] { } instance.#_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization = _446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization; + const _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations: (Translation)[] = []; + + let _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array = values[\\"https://w3id.org/fep/22cd#translations\\"]; + + for ( + const v of _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array == null + ? [] + : _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array.length === 1 && \\"@list\\" in _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array[0] + ? _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array[0][\\"@list\\"] + : _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array + ) { + if (v == null) continue; + + const decoded = + await Translation.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.push(decoded); + + } + instance.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; instance._shouldCacheJsonLd = shouldCacheJsonLd; if ( @@ -13581,6 +13740,28 @@ get urls(): ((URL | Link))[] { proxy.announceAuthorization = _446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization[0]; } + const _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 1 + || !(\\"translation\\" in proxy) + && _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 0) { + proxy.translations = _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + } + return proxy; } } @@ -13644,7 +13825,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -13680,7 +13861,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -13770,13 +13951,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -14039,7 +14234,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -14114,7 +14309,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -14853,13 +15048,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -15312,7 +15521,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -15594,7 +15803,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -18109,13 +18318,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -18926,7 +19149,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -18968,7 +19191,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -19047,13 +19270,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"litepub\\":\\"http://litepub.social/ns#\\",\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"EmojiReact\\":\\"litepub:EmojiReact\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -19629,13 +19866,27 @@ name?: string | LanguageString | null;value?: string | LanguageString | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -20322,13 +20573,27 @@ unit?: string | null;numericalValue?: Decimal | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -20692,7 +20957,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -20754,7 +21019,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -21405,13 +21670,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -21795,7 +22074,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -21837,7 +22116,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -21916,13 +22195,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -22650,13 +22943,27 @@ canFeature?: InteractionRule | null;canLike?: InteractionRule | null;canReply?: }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -23598,13 +23905,27 @@ get manualApprovals(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://gotosocial.org/ns\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -23979,7 +24300,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -24041,7 +24362,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -24692,13 +25013,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -25081,7 +25416,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -25123,7 +25458,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -25202,13 +25537,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -25473,7 +25822,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -25535,7 +25884,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -26186,13 +26535,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -26575,7 +26938,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -26617,7 +26980,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -26696,13 +27059,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -26967,7 +27344,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -27029,7 +27406,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -27679,13 +28056,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -28068,7 +28459,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -28110,7 +28501,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -28189,13 +28580,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -28381,34 +28786,1799 @@ instruments?: (Object | URL)[];} return instance; } - protected override _getCustomInspectProxy(): Record { - const proxy: Record = super._getCustomInspectProxy(); + protected override _getCustomInspectProxy(): Record { + const proxy: Record = super._getCustomInspectProxy(); + return proxy; + } + } + + +// deno-lint-ignore no-explicit-any +(QuoteRequest.prototype as any)[Symbol.for(\\"Deno.customInspect\\")] = + function ( + this: QuoteRequest, + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string { + const proxy = this._getCustomInspectProxy(); + return \\"QuoteRequest \\" + inspect(proxy, options); + }; + +// deno-lint-ignore no-explicit-any +(QuoteRequest.prototype as any)[Symbol.for(\\"nodejs.util.inspect.custom\\")] = + function ( + this: QuoteRequest, + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string { + const proxy = this._getCustomInspectProxy(); + return \\"QuoteRequest \\" + inspect(proxy, options); + }; + /** Translator credit and source freshness for one language version of an + * {@link Object}, as defined by the draft + * [FEP-22cd](https://w3id.org/fep/22cd). This is embedded metadata, not an + * independent post or activity target. Its optional identifier need not be + * dereferenceable and does not establish trust in embedded translator actors. + * + * Targets [draft revision 6d0d6559](https://codeberg.org/fediverse/fep/src/commit/6d0d6559054baeb7b71a5f2bdc14fc4c09b66f39/fep/22cd/fep-22cd.md). + * + */ +export class Translation { + + readonly #documentLoader?: DocumentLoader; + readonly #contextLoader?: DocumentLoader; + readonly #tracerProvider?: TracerProvider; + readonly #warning?: { + category: string[]; + message: string; + values?: Record; + }; + #cachedJsonLd?: unknown; + readonly #_baseUrl?: URL; + #shouldCacheJsonLd = true; + readonly id: URL | null; + + protected get _documentLoader(): DocumentLoader | undefined { + return this.#documentLoader; + } + + protected get _contextLoader(): DocumentLoader | undefined { + return this.#contextLoader; + } + + protected get _tracerProvider(): TracerProvider | undefined { + return this.#tracerProvider; + } + + protected get _warning(): { + category: string[]; + message: string; + values?: Record; + } | undefined { + return this.#warning; + } + + protected get _cachedJsonLd(): unknown | undefined { + return this.#cachedJsonLd; + } + + protected set _cachedJsonLd(value: unknown | undefined) { + this.#cachedJsonLd = value; + } + + protected get _baseUrl(): URL | undefined { + return this.#_baseUrl; + } + + protected get _shouldCacheJsonLd(): boolean { + return this.#shouldCacheJsonLd; + } + + protected set _shouldCacheJsonLd(value: boolean) { + this.#shouldCacheJsonLd = value; + } + + protected static _shouldCacheDecodedJsonLd(value: unknown): boolean { + if (value == null || typeof value !== \\"object\\") return true; + if (!(\\"_shouldCacheJsonLd\\" in value)) return true; + return (value as { _shouldCacheJsonLd: boolean })._shouldCacheJsonLd; + } + + /** + * The type URI of {@link Translation}: \`https://w3id.org/fep/22cd#Translation\`. + */ + static get typeId(): URL { + return new URL(\\"https://w3id.org/fep/22cd#Translation\\"); + } + #_diXuPmFWiEqfLPhhrxg6Xc7ixZG: (Intl.Locale)[] = []; + + #_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: (Application | Group | Organization | Person | Service | URL)[] = []; + #_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: Set = new Set(); + #_Msz9PwRg7cWkiXPL4ixyQLtuuH7: (URL)[] = []; +#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated: (Temporal.Instant)[] = []; +#_4KvkQNz1JjGs8S7iJDcGrUYETbUW: (URL)[] = []; +#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url: ((URL | Link))[] = []; + + /** + * Constructs a new instance of Translation with the given values. + * @param values The values to initialize the instance with. + * @param options The options to use for initialization. + */ + constructor( + values: + { +id?: URL | null; +language?: Intl.Locale | null;translator?: Application | Group | Organization | Person | Service | URL | null; +translators?: (Application | Group | Organization | Person | Service | URL)[];original?: URL | null;sourceUpdated?: Temporal.Instant | null;basis?: URL | null;url?: URL | Link | null; +urls?: ((URL | Link))[];} +, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + } = {}, + ) { + + this.#documentLoader = options.documentLoader; + this.#contextLoader = options.contextLoader; + this.#tracerProvider = options.tracerProvider; + const baseUrl = (options as { baseUrl?: URL }).baseUrl; + this.#_baseUrl = baseUrl == null ? undefined : new URL(baseUrl.href); + if (\\"\$warning\\" in options) { + this.#warning = options.\$warning as unknown as { + category: string[]; + message: string; + values?: Record; + }; + } + if (values.id == null || values.id instanceof URL) { + this.id = values.id ?? null; + } else { + throw new TypeError(\\"The id must be a URL.\\"); + } + + if (\\"language\\" in values && values.language != null) { + if (values.language instanceof Intl.Locale) { + // @ts-ignore: type is checked above. + this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = [values.language]; + + } else { + throw new TypeError( + \\"The language must be of type \\" + + \\"Intl.Locale\\" + \\".\\", + ); + } + } + + if (\\"translator\\" in values && values.translator != null) { + if (values.translator instanceof Application || values.translator instanceof Group || values.translator instanceof Organization || values.translator instanceof Person || values.translator instanceof Service || values.translator instanceof URL) { + // @ts-ignore: type is checked above. + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = [values.translator]; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(0); + } else { + throw new TypeError( + \\"The translator must be of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + + if (\\"translators\\" in values && values.translators != null) { + + if (\\"translator\\" in values && + values.translator != null) { + throw new TypeError( + \\"Cannot initialize both translator and \\" + + \\"translators at the same time.\\", + ); + } + + if (Array.isArray(values.translators) && + values.translators.every(v => v instanceof Application || v instanceof Group || v instanceof Organization || v instanceof Person || v instanceof Service || v instanceof URL)) { + // @ts-ignore: type is checked above. + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = values.translators; + + for (let i = 0; i < values.translators.length; i++) { + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + } + + } else { + throw new TypeError( + \\"The translators must be an array of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + + if (\\"original\\" in values && values.original != null) { + if (values.original instanceof URL) { + // @ts-ignore: type is checked above. + this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = [values.original]; + + } else { + throw new TypeError( + \\"The original must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + + if (\\"sourceUpdated\\" in values && values.sourceUpdated != null) { + if (isTemporalInstant(values.sourceUpdated)) { + // @ts-ignore: type is checked above. + this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = [values.sourceUpdated]; + + } else { + throw new TypeError( + \\"The sourceUpdated must be of type \\" + + \\"Temporal.Instant\\" + \\".\\", + ); + } + } + + if (\\"basis\\" in values && values.basis != null) { + if (values.basis instanceof URL) { + // @ts-ignore: type is checked above. + this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = [values.basis]; + + } else { + throw new TypeError( + \\"The basis must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + + if (\\"url\\" in values && values.url != null) { + if (values.url instanceof URL || values.url instanceof Link) { + // @ts-ignore: type is checked above. + this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = [values.url]; + + } else { + throw new TypeError( + \\"The url must be of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + + if (\\"urls\\" in values && values.urls != null) { + + if (\\"url\\" in values && + values.url != null) { + throw new TypeError( + \\"Cannot initialize both url and \\" + + \\"urls at the same time.\\", + ); + } + + if (Array.isArray(values.urls) && + values.urls.every(v => v instanceof URL || v instanceof Link)) { + // @ts-ignore: type is checked above. + this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = values.urls; + + } else { + throw new TypeError( + \\"The urls must be an array of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + } + + /** + * Clones this instance, optionally updating it with the given values. + * @param values The values to update the clone with. + * @param options The options to use for cloning. + * @returns The cloned instance. + */ + clone( + values: + { +id?: URL | null; +language?: Intl.Locale | null;translator?: Application | Group | Organization | Person | Service | URL | null; +translators?: (Application | Group | Organization | Person | Service | URL)[];original?: URL | null;sourceUpdated?: Temporal.Instant | null;basis?: URL | null;url?: URL | Link | null; +urls?: ((URL | Link))[];} + + = {}, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + } = {} + ): Translation { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + // @ts-ignore: \$warning is not recognized as a property, but it is. + options = { ...options, \$warning: this._warning }; + } + + // @ts-ignore: this.constructor is not recognized as a constructor, but it is. + const clone: Translation = new this.constructor( + { id: values.id ?? this.id }, + options + ); + clone.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG; + if (\\"language\\" in values && values.language != null) { + if (values.language instanceof Intl.Locale) { + // @ts-ignore: type is checked above. + clone.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = [values.language]; + + } else { + throw new TypeError( + \\"The language must be of type \\" + + \\"Intl.Locale\\" + \\".\\", + ); + } + } + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR;clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set(this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR); + if (\\"translator\\" in values && values.translator != null) { + if (values.translator instanceof Application || values.translator instanceof Group || values.translator instanceof Organization || values.translator instanceof Person || values.translator instanceof Service || values.translator instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = [values.translator]; + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set([0]); + } else { + throw new TypeError( + \\"The translator must be of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + + if (\\"translators\\" in values && values.translators != null) { + + if (\\"translator\\" in values && + values.translator != null) { + throw new TypeError( + \\"Cannot update both translator and \\" + + \\"translators at the same time.\\", + ); + } + + if (Array.isArray(values.translators) && + values.translators.every(v => v instanceof Application || v instanceof Group || v instanceof Organization || v instanceof Person || v instanceof Service || v instanceof URL)) { + // @ts-ignore: type is checked above. + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = values.translators; + + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set(); + for (let i = 0; i < values.translators.length; i++) { + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + } + + } else { + throw new TypeError( + \\"The translators must be an array of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + clone.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7; + if (\\"original\\" in values && values.original != null) { + if (values.original instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = [values.original]; + + } else { + throw new TypeError( + \\"The original must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + clone.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated; + if (\\"sourceUpdated\\" in values && values.sourceUpdated != null) { + if (isTemporalInstant(values.sourceUpdated)) { + // @ts-ignore: type is checked above. + clone.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = [values.sourceUpdated]; + + } else { + throw new TypeError( + \\"The sourceUpdated must be of type \\" + + \\"Temporal.Instant\\" + \\".\\", + ); + } + } + clone.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW; + if (\\"basis\\" in values && values.basis != null) { + if (values.basis instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = [values.basis]; + + } else { + throw new TypeError( + \\"The basis must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + if (\\"url\\" in values && values.url != null) { + if (values.url instanceof URL || values.url instanceof Link) { + // @ts-ignore: type is checked above. + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = [values.url]; + + } else { + throw new TypeError( + \\"The url must be of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + + if (\\"urls\\" in values && values.urls != null) { + + if (\\"url\\" in values && + values.url != null) { + throw new TypeError( + \\"Cannot update both url and \\" + + \\"urls at the same time.\\", + ); + } + + if (Array.isArray(values.urls) && + values.urls.every(v => v instanceof URL || v instanceof Link)) { + // @ts-ignore: type is checked above. + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = values.urls; + + } else { + throw new TypeError( + \\"The urls must be an array of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + + return clone; + } + +/** The translated language. Publishers must match a language in the + * containing object's content, name, or summary map. + * + */ + get language(): (Intl.Locale | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG.length < 1) return null; + return this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG[0]; + } + + async #fetchTranslator( + url: URL, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: \\"ignore\\" | \\"throw\\" | \\"trust\\"; + } = {}, + ): Promise { + const documentLoader = + options.documentLoader ?? this._documentLoader ?? getDocumentLoader(); + const contextLoader = + options.contextLoader ?? this._contextLoader ?? getDocumentLoader(); + const tracerProvider = options.tracerProvider ?? + this._tracerProvider ?? trace.getTracerProvider(); + const tracer = tracerProvider.getTracer( + \\"@fedify/vocab-tools\\", + \\"0.0.0\\", + ); + return await tracer.startActiveSpan(\\"activitypub.lookup_object\\", async (span) => { + const lookupUrl = formatIri(url); + let fetchResult: RemoteDocument; + try { + fetchResult = await documentLoader(lookupUrl); + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(error), + }); + span.end(); + if (options.suppressError) { + getLogger([\\"fedify\\", \\"vocab\\"]).error( + \\"Failed to fetch {url}: {error}\\", + { error, url: lookupUrl } + ); + return null; + } + throw error; + } + const { document, documentUrl } = fetchResult; + const baseUrl = parseIri(documentUrl); + try { + const obj = await this.#translator_fromJsonLd( + document, + { documentLoader, contextLoader, tracerProvider, baseUrl } + ); + if (obj?.id != null && !isTrustedIriOrigin(options, obj.id, baseUrl)) { + if (options.crossOrigin === \\"throw\\") { + throw new Error( + \\"The object's @id (\\" + obj.id.href + \\") has a different origin \\" + + \\"than the document URL (\\" + baseUrl.href + \\"); refusing to return \\" + + \\"the object. If you want to bypass this check and are aware of\\" + + 'the security implications, set the crossOrigin option to \\"trust\\".' + ); + } + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"The object's @id ({objectId}) has a different origin than the document \\" + + \\"URL ({documentUrl}); refusing to return the object. If you want to \\" + + \\"bypass this check and are aware of the security implications, \\" + + 'set the crossOrigin option to \\"trust\\".', + { ...fetchResult, objectId: obj.id.href }, + ); + return null; + } + span.setAttribute(\\"activitypub.object.id\\", (obj.id ?? url).href); + span.setAttribute( + \\"activitypub.object.type\\", + // @ts-ignore: obj.constructor always has a typeId. + obj.constructor.typeId.href + ); + return obj; + } catch (e) { + if (options.suppressError) { + getLogger([\\"fedify\\", \\"vocab\\"]).error( + \\"Failed to parse {url}: {error}\\", + { error: e, url: lookupUrl } + ); + return null; + } + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(e), + }); + throw e; + } finally { + span.end(); + } + }); + } + + async #translator_fromJsonLd( + jsonLd: unknown, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL + } + ): Promise { + const documentLoader = + options.documentLoader ?? this._documentLoader ?? getDocumentLoader(); + const contextLoader = + options.contextLoader ?? this._contextLoader ?? getDocumentLoader(); + const tracerProvider = options.tracerProvider ?? + this._tracerProvider ?? trace.getTracerProvider(); + const baseUrl = options.baseUrl; + + try { + return await Application.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Group.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Organization.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Person.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Service.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + throw new TypeError(\\"Expected an object of any type of: \\" + + [\\"https://www.w3.org/ns/activitystreams#Application\\",\\"https://www.w3.org/ns/activitystreams#Group\\",\\"https://www.w3.org/ns/activitystreams#Organization\\",\\"https://www.w3.org/ns/activitystreams#Person\\",\\"https://www.w3.org/ns/activitystreams#Service\\"].join(\\", \\")); + } + + + /** + * Similar to + * {@link Translation.getTranslator}, + * but returns its \`@id\` URL instead of the object itself. + */ + get translatorId(): URL | null { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length < 1) return null; + const v = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + if (v instanceof URL) return v; + return v.id; + } + +/** The actors credited for this language version. Their order has no + * meaning. Human actors credit translation or review; Application and + * Service actors credit machine output. If any actor cannot be resolved, + * the entry's human-or-machine status is unknown. Credit is asserted by + * the publisher and grants no publishing authority. Embedded actors with + * identifiers are fetched before being returned unless explicitly trusted. + * + */ + + async getTranslator( + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: \\"ignore\\" | \\"throw\\" | \\"trust\\"; + } = {} + ): Promise { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length < 1) return null; + let v = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + if (!(v instanceof URL) && + v.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(0)) { + v = v.id; + } + if (v instanceof URL) { + const fetched = + await this.#fetchTranslator(v, options); + if (fetched == null) return null; + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0] = fetched; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(0); + this._cachedJsonLd = undefined; + return fetched; + } + + if ( + this._cachedJsonLd != null && + typeof this._cachedJsonLd === \\"object\\" && + \\"@context\\" in this._cachedJsonLd && + \\"translator\\" in this._cachedJsonLd + ) { + const prop = this._cachedJsonLd[ + \\"translator\\"]; + const doc = Array.isArray(prop) ? prop[0] : prop; + if (doc != null && typeof doc === \\"object\\" && \\"@context\\" in doc) { + + v = await this.#translator_fromJsonLd(doc, { + ...options, + baseUrl: (options as { baseUrl?: URL }).baseUrl ?? + this._baseUrl ?? + (this.id != null && + (this.id.protocol === \\"http:\\" || + this.id.protocol === \\"https:\\") + ? this.id + : undefined), + }); + + } + } + + if (v?.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(0)) { + if (options.crossOrigin === \\"throw\\") { + throw new Error( + \\"The property object's @id (\\" + v.id.href + \\") has a different \\" + + \\"origin than the property owner's @id (\\" + \\"untrusted metadata\\" + \\"); \\" + + \\"refusing to return the object. If you want to bypass this \\" + + \\"check and are aware of the security implications, set the \\" + + 'crossOrigin option to \\"trust\\".' + ); + } + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"The property object's @id ({objectId}) has a different origin \\" + + \\"than the property owner's @id ({parentObjectId}); refusing to \\" + + \\"return the object. If you want to bypass this check and are \\" + + \\"aware of the security implications, set the crossOrigin option \\" + + 'to \\"trust\\".', + { objectId: v.id.href, parentObjectId: \\"untrusted metadata\\" }, + ); + return null; + } + return v; + } + + /** + * Similar to + * {@link Translation.getTranslators}, + * but returns their \`@id\`s instead of the objects themselves. + */ + get translatorIds(): URL[] { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + return this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.map((v) => + v instanceof URL ? v : v.id! + ).filter(id => id !== null); + } + +/** The actors credited for this language version. Their order has no + * meaning. Human actors credit translation or review; Application and + * Service actors credit machine output. If any actor cannot be resolved, + * the entry's human-or-machine status is unknown. Credit is asserted by + * the publisher and grants no publishing authority. Embedded actors with + * identifiers are fetched before being returned unless explicitly trusted. + * + */ + + async* getTranslators( + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: \\"ignore\\" | \\"throw\\" | \\"trust\\"; + } = {} + ): AsyncIterable { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + const vs = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + for (let i = 0; i < vs.length; i++) { + let v = vs[i]; + if (!(v instanceof URL) && + v.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(i)) { + v = v.id; + } + if (v instanceof URL) { + const fetched = + await this.#fetchTranslator(v, options); + if (fetched == null) continue; + vs[i] = fetched; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + this._cachedJsonLd = undefined; + yield fetched; + continue; + } + + if ( + this._cachedJsonLd != null && + typeof this._cachedJsonLd === \\"object\\" && + \\"@context\\" in this._cachedJsonLd && + \\"translator\\" in this._cachedJsonLd + ) { + const prop = this._cachedJsonLd[ + \\"translator\\"]; + const obj = Array.isArray(prop) ? prop[i] : prop; + if (obj != null && typeof obj === \\"object\\" && \\"@context\\" in obj) { + + v = await this.#translator_fromJsonLd(obj, { + ...options, + baseUrl: (options as { baseUrl?: URL }).baseUrl ?? + this._baseUrl ?? + (this.id != null && + (this.id.protocol === \\"http:\\" || + this.id.protocol === \\"https:\\") + ? this.id + : undefined), + }); + + } + } + + if (v?.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(i)) { + if (options.crossOrigin === \\"throw\\") { + throw new Error( + \\"The property object's @id (\\" + v.id.href + \\") has a different \\" + + \\"origin than the property owner's @id (\\" + \\"untrusted metadata\\" + \\"); \\" + + \\"refusing to return the object. If you want to bypass this \\" + + \\"check and are aware of the security implications, set the \\" + + 'crossOrigin option to \\"trust\\".' + ); + } + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"The property object's @id ({objectId}) has a different origin \\" + + \\"than the property owner's @id ({parentObjectId}); refusing to \\" + + \\"return the object. If you want to bypass this check and are \\" + + \\"aware of the security implications, set the crossOrigin \\" + + 'option to \\"trust\\".', + { objectId: v.id.href, parentObjectId: \\"untrusted metadata\\" }, + ); + continue; + } + yield v; + } + } + +/** The identifier of the containing object. FEP-22cd translations share + * that object's identity rather than introducing separate posts. + * + */ + get original(): (URL | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7.length < 1) return null; + return this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7[0]; + } + +/** The source object's updated timestamp (or published timestamp if it has + * no updated timestamp) at the last human review of this translation. + * An absent value makes no freshness claim. A value earlier than the + * current source timestamp indicates a potentially stale translation; + * an equal or later value reflects the current source. + * + */ + get sourceUpdated(): (Temporal.Instant | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.length < 1) return null; + return this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated[0]; + } + +/** An optional public revision resource identifying the source reviewed. + * Supplements sourceUpdated without requiring private revision history + * to be exposed. + * + */ + get basis(): (URL | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW.length < 1) return null; + return this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW[0]; + } + +/** Links to renderings of this specific language version. + */ + get url(): (URL | Link | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length < 1) return null; + return this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url[0]; + } + +/** Links to renderings of this specific language version. + */ +get urls(): ((URL | Link))[] { + return this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + } + + /** + * Converts this object to a JSON-LD structure. + * @param options The options to use. + * - \`format\`: The format of the output: \`compact\` or + \`expand\`. + * - \`contextLoader\`: The loader for remote JSON-LD contexts. + * - \`context\`: The JSON-LD context to use. Not applicable + when \`format\` is set to \`'expand'\`. + * @returns The JSON-LD representation of this object. + */ + async toJsonLd(options: { + format?: \\"compact\\" | \\"expand\\", + contextLoader?: DocumentLoader, + context?: string | Record | (string | Record)[], + } = {}): Promise { + if (options.format == null && this._cachedJsonLd != null) { + return this._cachedJsonLd; + } + if (options.format !== \\"compact\\" && options.context != null) { + throw new TypeError( + \\"The context option can only be used when the format option is set \\" + + \\"to 'compact'.\\" + ); + } + options = { + ...options, + contextLoader: options.contextLoader ?? getDocumentLoader(), + }; + + if (options.format == null && this.isCompactable()) { + const result: Record = {}; + // deno-lint-ignore no-unused-vars + let compactItems: unknown[]; + + compactItems = []; + for (const v of this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG) { + const item = ( + v.baseName + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"inLanguage\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR) { + const item = ( + v instanceof URL ? formatIri(v) : v instanceof Application ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Group ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Organization ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Person ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"translator\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7) { + const item = ( + formatIri(v) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"translationOfWork\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated) { + const item = ( + v.toString() + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"sourceUpdated\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW) { + const item = ( + formatIri(v) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"isBasedOn\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url) { + const item = ( + v instanceof URL ? formatIri(v) : await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"url\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + result[\\"type\\"] = \\"Translation\\"; + if (this.id != null) result[\\"id\\"] = formatIri(this.id); + result[\\"@context\\"] = [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/22cd\\"]; + return result; + } + + // deno-lint-ignore no-unused-vars prefer-const + let array: unknown[]; + const values: Record = {}; + array = []; + for (const v of this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG) { + let element = ( + { \\"@value\\": v.baseName } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/inLanguage\\"] = propValue; + + } + + array = []; + for (const v of this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR) { + let element = ( + v instanceof URL ? { \\"@id\\": formatIri(v) } : v instanceof Application ? await v.toJsonLd(options) : v instanceof Group ? await v.toJsonLd(options) : v instanceof Organization ? await v.toJsonLd(options) : v instanceof Person ? await v.toJsonLd(options) : await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/translator\\"] = propValue; + + } + + array = []; + for (const v of this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7) { + let element = ( + { \\"@id\\": formatIri(v) } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/translationOfWork\\"] = propValue; + + } + + array = []; + for (const v of this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated) { + let element = ( + { + \\"@type\\": \\"http://www.w3.org/2001/XMLSchema#dateTime\\", + \\"@value\\": v.toString(), + } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://w3id.org/fep/22cd#sourceUpdated\\"] = propValue; + + } + + array = []; + for (const v of this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW) { + let element = ( + { \\"@id\\": formatIri(v) } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/isBasedOn\\"] = propValue; + + } + + array = []; + for (const v of this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url) { + let element = ( + v instanceof URL ? { \\"@id\\": formatIri(v) } : await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://www.w3.org/ns/activitystreams#url\\"] = propValue; + + } + + values[\\"@type\\"] = [\\"https://w3id.org/fep/22cd#Translation\\"]; + if (this.id != null) values[\\"@id\\"] = formatIri(this.id); + if (options.format === \\"expand\\") { + return await jsonld.expand( + values, + { + documentLoader: options.contextLoader, + keepFreeFloatingNodes: true, + }, + ); + } + let docContext: Parameters[1] = options.context ?? + [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/22cd\\"]; + let compacted = await jsonld.compact( + values, + docContext, + { documentLoader: options.contextLoader }, + ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + + if (docContext != null) { + // Embed context + + } + return compacted; + } + + protected isCompactable(): boolean { + + if ( + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR != null && + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 0 + ) return false; + + return true; + } + + /** + * Converts a JSON-LD structure to an object of this type. + * @param json The JSON-LD structure to convert. + * @param options The options to use. + * - \`documentLoader\`: The loader for remote JSON-LD documents. + * - \`contextLoader\`: The loader for remote JSON-LD contexts. + * - \`tracerProvider\`: The OpenTelemetry tracer provider to use. + * If omitted, the global tracer provider is used. + * @returns The object of this type. + * @throws {TypeError} If the given \`json\` is invalid. + */ + static async fromJsonLd( + json: unknown, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL, + } = {}, + ): Promise { + const tracerProvider = options.tracerProvider ?? trace.getTracerProvider(); + const tracer = tracerProvider.getTracer( + \\"@fedify/vocab-tools\\", + \\"0.0.0\\", + ); + return await tracer.startActiveSpan( + \\"activitypub.parse_object\\", + async (span) => { + try { + const object = await this.__fromJsonLd__Translation__( + json, span, options); + if (object.id != null) { + span.setAttribute(\\"activitypub.object.id\\", object.id.href); + } + return object; + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(error), + }); + throw error; + } finally { + span.end(); + } + }, + ); + } + + protected static async __fromJsonLd__Translation__( + json: unknown, + span: Span, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL, + } = {}, + ): Promise { + if (typeof json === \\"undefined\\") { + throw new TypeError(\\"Invalid JSON-LD: undefined.\\"); + } + else if (json === null) throw new TypeError(\\"Invalid JSON-LD: null.\\"); + options = { + ...options, + documentLoader: options.documentLoader ?? getDocumentLoader(), + contextLoader: options.contextLoader ?? getDocumentLoader(), + tracerProvider: options.tracerProvider ?? trace.getTracerProvider(), + }; + // deno-lint-ignore no-explicit-any + let values: Record & { \\"@id\\"?: string }; + let expanded: unknown[]; + if ( + \\"_fromSubclass\\" in options && + options._fromSubclass && + typeof json === \\"object\\" && + !Array.isArray(json) + ) { + values = + // deno-lint-ignore no-explicit-any + json as (Record & { \\"@id\\"?: string }); + expanded = [values]; + } else if (globalThis.Object.keys(json).length == 0) { + values = {}; + expanded = [values]; + } else { + expanded = await jsonld.expand(json, { + documentLoader: options.contextLoader, + keepFreeFloatingNodes: true, + }); + values = + // deno-lint-ignore no-explicit-any + (expanded[0] ?? {}) as (Record & { \\"@id\\"?: string }); + } + const id = parseJsonLdId(values[\\"@id\\"], options.baseUrl); + if (id != null && options.baseUrl == null) { + options = { ...options, baseUrl: id }; + } + + if (\\"@type\\" in values) { + span.setAttribute(\\"activitypub.object.type\\", values[\\"@type\\"]); + } + if (\\"@type\\" in values && + !values[\\"@type\\"].every(t => t.startsWith(\\"_:\\"))) { + + if (!values[\\"@type\\"].includes(\\"https://w3id.org/fep/22cd#Translation\\")) { + throw new TypeError(\\"Invalid type: \\" + values[\\"@type\\"]); + } + } + + let cacheJsonLd = !(\\"_fromSubclass\\" in options) || !options._fromSubclass + ? normalizeJsonLdIris( + expanded, + PORTABLE_IRI_KEYS, + PORTABLE_IRI_PATTERN, + ) + : undefined; + if (cacheJsonLd != null && cacheJsonLd !== expanded) { + cacheJsonLd = structuredClone(cacheJsonLd); + } + + const instance = new this( + { + id + }, + options, + ); + + let shouldCacheJsonLd = instance._shouldCacheJsonLd; + const _diXuPmFWiEqfLPhhrxg6Xc7ixZG: (Intl.Locale)[] = []; + + let _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array = values[\\"https://schema.org/inLanguage\\"]; + + for ( + const v of _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array == null + ? [] + : _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array.length === 1 && \\"@list\\" in _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array[0] + ? _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array[0][\\"@list\\"] + : _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array + ) { + if (v == null) continue; + + const decoded = + new Intl.Locale(v[\\"@value\\"]) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _diXuPmFWiEqfLPhhrxg6Xc7ixZG.push(decoded); + + } + instance.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = _diXuPmFWiEqfLPhhrxg6Xc7ixZG; + + const _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: (Application | Group | Organization | Person | Service | URL)[] = []; + const _trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: Set = new Set(); + + let _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array = values[\\"https://schema.org/translator\\"]; + + for ( + const v of _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array == null + ? [] + : _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array.length === 1 && \\"@list\\" in _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array[0] + ? _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array[0][\\"@list\\"] + : _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array + ) { + if (v == null) continue; + + if (typeof v === \\"object\\" && \\"@id\\" in v && !(\\"@type\\" in v) + && globalThis.Object.keys(v).length === 1) { + if (v[\\"@id\\"].startsWith(\\"_:\\")) continue; + _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.push(parseIri(v[\\"@id\\"], options.baseUrl)); + continue; + } + + const decoded = + typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Application\\") ? await Application.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Group\\") ? await Group.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Organization\\") ? await Organization.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Person\\") ? await Person.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Service\\") ? await Service.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : undefined + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.push(decoded); + + } + instance.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + const _Msz9PwRg7cWkiXPL4ixyQLtuuH7: (URL)[] = []; + + let _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array = values[\\"https://schema.org/translationOfWork\\"]; + + for ( + const v of _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array == null + ? [] + : _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array.length === 1 && \\"@list\\" in _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array[0] + ? _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array[0][\\"@list\\"] + : _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array + ) { + if (v == null) continue; + + const decoded = + parseIri(v[\\"@id\\"], options.baseUrl) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _Msz9PwRg7cWkiXPL4ixyQLtuuH7.push(decoded); + + } + instance.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = _Msz9PwRg7cWkiXPL4ixyQLtuuH7; + const _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated: (Temporal.Instant)[] = []; + + let _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array = values[\\"https://w3id.org/fep/22cd#sourceUpdated\\"]; + + for ( + const v of _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array == null + ? [] + : _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array.length === 1 && \\"@list\\" in _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array[0] + ? _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array[0][\\"@list\\"] + : _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array + ) { + if (v == null) continue; + + const decoded = + Temporal.Instant.from( + v[\\"@value\\"].substring(19).match(/[Z+-]/) + ? v[\\"@value\\"] + : v[\\"@value\\"] + \\"Z\\" + ) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.push(decoded); + + } + instance.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated; + const _4KvkQNz1JjGs8S7iJDcGrUYETbUW: (URL)[] = []; + + let _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array = values[\\"https://schema.org/isBasedOn\\"]; + + for ( + const v of _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array == null + ? [] + : _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array.length === 1 && \\"@list\\" in _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array[0] + ? _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array[0][\\"@list\\"] + : _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array + ) { + if (v == null) continue; + + const decoded = + parseIri(v[\\"@id\\"], options.baseUrl) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _4KvkQNz1JjGs8S7iJDcGrUYETbUW.push(decoded); + + } + instance.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = _4KvkQNz1JjGs8S7iJDcGrUYETbUW; + const _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url: ((URL | Link))[] = []; + + let _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array = values[\\"https://www.w3.org/ns/activitystreams#url\\"]; + + for ( + const v of _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array == null + ? [] + : _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array.length === 1 && \\"@list\\" in _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array[0] + ? _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array[0][\\"@list\\"] + : _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array + ) { + if (v == null) continue; + + const decoded = + v != null && typeof v === \\"object\\" && \\"@id\\" in v + && typeof v[\\"@id\\"] === \\"string\\" + && v[\\"@id\\"] !== \\"\\" ? parseIri(v[\\"@id\\"], options.baseUrl) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& [\\"https://www.w3.org/ns/activitystreams#Link\\",\\"https://www.w3.org/ns/activitystreams#Hashtag\\",\\"https://www.w3.org/ns/activitystreams#Mention\\"].some( + t => v[\\"@type\\"].includes(t)) ? await Link.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : undefined + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.push(decoded); + + } + instance.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + + instance._shouldCacheJsonLd = shouldCacheJsonLd; + if ( + shouldCacheJsonLd && + (!(\\"_fromSubclass\\" in options) || !options._fromSubclass) + ) { + try { + if (cacheJsonLd != null && cacheJsonLd !== expanded) { + const compactArray = Array.isArray(json) && json.length === 1; + const jsonLd = compactArray ? json[0] : json; + const normalized = cacheJsonLd; + const cachedJsonLd = await compactJsonLdCache( + normalized, + jsonLd, + options.contextLoader, + ); + instance._cachedJsonLd = compactArray ? [cachedJsonLd] : cachedJsonLd; + } else { + instance._cachedJsonLd = structuredClone(json); + } + } catch { + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"Failed to cache JSON-LD: {json}\\", + { json }, + ); + } + } + return instance; + } + + protected _getCustomInspectProxy(): Record { + + const proxy: Record = {}; + if (this.id != null) { + proxy.id = { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(this.id!.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(this.id!.href, options), + }; + } + + const _diXuPmFWiEqfLPhhrxg6Xc7ixZG = this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_diXuPmFWiEqfLPhhrxg6Xc7ixZG.length == 1) { + proxy.language = _diXuPmFWiEqfLPhhrxg6Xc7ixZG[0]; + } + + const _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length == 1) { + proxy.translator = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + } + + if (_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 1 + || !(\\"translator\\" in proxy) + && _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 0) { + proxy.translators = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + } + + const _Msz9PwRg7cWkiXPL4ixyQLtuuH7 = this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_Msz9PwRg7cWkiXPL4ixyQLtuuH7.length == 1) { + proxy.original = _Msz9PwRg7cWkiXPL4ixyQLtuuH7[0]; + } + + const _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.length == 1) { + proxy.sourceUpdated = _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated[0]; + } + + const _4KvkQNz1JjGs8S7iJDcGrUYETbUW = this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_4KvkQNz1JjGs8S7iJDcGrUYETbUW.length == 1) { + proxy.basis = _4KvkQNz1JjGs8S7iJDcGrUYETbUW[0]; + } + + const _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length == 1) { + proxy.url = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url[0]; + } + + if (_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length > 1 + || !(\\"url\\" in proxy) + && _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length > 0) { + proxy.urls = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + } + return proxy; } } // deno-lint-ignore no-explicit-any -(QuoteRequest.prototype as any)[Symbol.for(\\"Deno.customInspect\\")] = +(Translation.prototype as any)[Symbol.for(\\"Deno.customInspect\\")] = function ( - this: QuoteRequest, + this: Translation, inspect: typeof Deno.inspect, options: Deno.InspectOptions, ): string { const proxy = this._getCustomInspectProxy(); - return \\"QuoteRequest \\" + inspect(proxy, options); + return \\"Translation \\" + inspect(proxy, options); }; // deno-lint-ignore no-explicit-any -(QuoteRequest.prototype as any)[Symbol.for(\\"nodejs.util.inspect.custom\\")] = +(Translation.prototype as any)[Symbol.for(\\"nodejs.util.inspect.custom\\")] = function ( - this: QuoteRequest, + this: Translation, _depth: number, options: unknown, inspect: (value: unknown, options: unknown) => string, ): string { const proxy = this._getCustomInspectProxy(); - return \\"QuoteRequest \\" + inspect(proxy, options); + return \\"Translation \\" + inspect(proxy, options); }; /** Proves that an actor consented to being included in a * {@link FeaturedCollection}. @@ -28456,7 +30626,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -28518,7 +30688,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -29166,13 +31336,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -29552,7 +31736,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -29594,7 +31778,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -29673,13 +31857,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -29972,7 +32170,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -30183,7 +32381,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} = {}, options: { @@ -33727,13 +35925,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -34795,7 +37007,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} , options: { documentLoader?: DocumentLoader, @@ -34850,7 +37062,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} = {}, options: { @@ -35240,13 +37452,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -35576,7 +37802,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} , options: { documentLoader?: DocumentLoader, @@ -35638,7 +37864,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} = {}, options: { @@ -35861,13 +38087,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"discoverable\\":\\"toot:discoverable\\",\\"Hashtag\\":\\"as:Hashtag\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -36228,7 +38468,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -36290,7 +38530,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} = {}, options: { @@ -36940,13 +39180,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -37591,13 +39845,27 @@ get endpoints(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/did/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -37987,13 +40255,27 @@ endpoints?: (URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/did/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -38899,13 +41181,27 @@ cryptosuite?: \\"eddsa-jcs-2022\\" | null;verificationMethod?: Multikey | URL | }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://w3id.org/security/data-integrity/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -40007,13 +42303,27 @@ owner?: Application | Group | Organization | Person | Service | URL | null;publi }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://w3id.org/security/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -40992,13 +43302,27 @@ controller?: Application | Group | Organization | Person | Service | URL | null; }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://w3id.org/security/multikey/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -41390,7 +43714,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} , options: { documentLoader?: DocumentLoader, @@ -41452,7 +43776,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} = {}, options: { @@ -41680,13 +44004,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"},\\"Agreement\\":\\"vf:Agreement\\",\\"Commitment\\":\\"vf:Commitment\\",\\"stipulates\\":\\"vf:stipulates\\",\\"stipulatesReciprocal\\":\\"vf:stipulatesReciprocal\\",\\"satisfies\\":{\\"@id\\":\\"vf:satisfies\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -42370,13 +44708,27 @@ satisfies?: URL | null;resourceQuantity?: Measure | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"Commitment\\":\\"vf:Commitment\\",\\"satisfies\\":{\\"@id\\":\\"vf:satisfies\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -43289,13 +45641,27 @@ action?: string | null;resourceConformsTo?: URL | null;resourceQuantity?: Measur }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"Intent\\":\\"vf:Intent\\",\\"action\\":\\"vf:action\\",\\"resourceConformsTo\\":{\\"@id\\":\\"vf:resourceConformsTo\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"availableQuantity\\":\\"vf:availableQuantity\\",\\"minimumQuantity\\":\\"vf:minimumQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -43816,7 +46182,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} , options: { documentLoader?: DocumentLoader, @@ -43904,7 +46270,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} = {}, options: { @@ -44257,13 +46623,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"},\\"Proposal\\":\\"vf:Proposal\\",\\"Intent\\":\\"vf:Intent\\",\\"purpose\\":\\"vf:purpose\\",\\"unitBased\\":\\"vf:unitBased\\",\\"publishes\\":\\"vf:publishes\\",\\"reciprocal\\":\\"vf:reciprocal\\",\\"action\\":\\"vf:action\\",\\"resourceConformsTo\\":{\\"@id\\":\\"vf:resourceConformsTo\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"availableQuantity\\":\\"vf:availableQuantity\\",\\"minimumQuantity\\":\\"vf:minimumQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -44719,7 +47099,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -44761,7 +47141,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -44840,13 +47220,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45105,7 +47499,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45147,7 +47541,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45226,13 +47620,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45486,7 +47894,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45528,7 +47936,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45607,13 +48015,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45916,7 +48338,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -46430,7 +48852,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -51901,13 +54323,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -53606,7 +56042,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -53648,7 +56084,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -53727,13 +56163,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -53999,7 +56449,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -54041,7 +56491,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -54120,13 +56570,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -54384,7 +56848,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -54459,7 +56923,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -55198,13 +57662,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -55637,7 +58115,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -55712,7 +58190,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -56002,13 +58480,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -56422,7 +58914,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -56458,7 +58950,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -56548,13 +59040,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -56807,7 +59313,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -56849,7 +59355,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -56928,13 +59434,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -57193,7 +59713,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -57235,7 +59755,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -57314,13 +59834,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -57583,7 +60117,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -57658,7 +60192,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} = {}, options: { @@ -58588,13 +61122,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59032,7 +61580,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59074,7 +61622,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59153,13 +61701,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59412,7 +61974,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59454,7 +62016,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59533,13 +62095,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59790,7 +62366,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59832,7 +62408,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59911,13 +62487,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -60896,13 +63486,27 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/activitystreams\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -61496,7 +64100,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -61532,7 +64136,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -61622,13 +64226,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -61882,7 +64500,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -61924,7 +64542,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62003,13 +64621,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -62264,7 +64896,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62306,7 +64938,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62385,13 +65017,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -62694,7 +65340,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -63208,7 +65854,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -68679,13 +71325,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -71630,13 +74290,27 @@ get names(): ((string | LanguageString))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -72479,13 +75153,27 @@ names?: ((string | LanguageString))[];language?: Intl.Locale | null;height?: num }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"Hashtag\\":\\"as:Hashtag\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -72725,7 +75413,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -72761,7 +75449,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -72851,13 +75539,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73111,7 +75813,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73153,7 +75855,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73232,13 +75934,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73495,7 +76211,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73537,7 +76253,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73616,13 +76332,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73875,7 +76605,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73917,7 +76647,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73996,13 +76726,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -74255,7 +76999,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74297,7 +77041,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74376,13 +77120,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -74635,7 +77393,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74677,7 +77435,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74756,13 +77514,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75013,7 +77785,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75055,7 +77827,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75134,13 +77906,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75489,13 +78275,27 @@ names?: ((string | LanguageString))[];language?: Intl.Locale | null;height?: num }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/activitystreams\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75738,7 +78538,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75780,7 +78580,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75859,13 +78659,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -76125,7 +78939,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -76200,7 +79014,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -76939,13 +79753,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -77382,7 +80210,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} , options: { documentLoader?: DocumentLoader, @@ -77450,7 +80278,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} = {}, options: { @@ -77907,13 +80735,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -78335,7 +81177,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -78849,7 +81691,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -84320,13 +87162,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -86022,7 +88878,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -86058,7 +88914,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -86148,13 +89004,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -86457,7 +89327,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -86971,7 +89841,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -92442,13 +95312,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -94153,7 +97037,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -94267,7 +97151,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} = {}, options: { @@ -94756,13 +97640,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -95318,7 +98216,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;describes?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];describes?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -95367,7 +98265,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;describes?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];describes?: Object | URL | null;} = {}, options: { @@ -95738,13 +98636,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -96079,7 +98991,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -96224,7 +99136,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -97530,13 +100442,27 @@ instruments?: (Object | URL)[];exclusiveOptions?: (Object | URL)[];inclusiveOpti }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98201,7 +101127,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98243,7 +101169,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98322,13 +101248,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98581,7 +101521,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98623,7 +101563,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98702,13 +101642,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98979,7 +101933,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;subject?: Object | URL | null;object?: Object | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];subject?: Object | URL | null;object?: Object | URL | null; objects?: (Object | URL)[];relationship?: Object | URL | null; relationships?: (Object | URL)[];} , @@ -99110,7 +102064,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;subject?: Object | URL | null;object?: Object | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];subject?: Object | URL | null;object?: Object | URL | null; objects?: (Object | URL)[];relationship?: Object | URL | null; relationships?: (Object | URL)[];} @@ -100319,13 +103273,27 @@ relationships?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -100773,7 +103741,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -100815,7 +103783,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -100894,13 +103862,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -101203,7 +104185,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -101717,7 +104699,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -107188,13 +110170,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -109263,13 +112259,27 @@ get contents(): ((string | LanguageString))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/activitystreams\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -109635,7 +112645,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -109677,7 +112687,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -109756,13 +112766,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -110015,7 +113039,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -110057,7 +113081,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -110136,13 +113160,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -110398,7 +113436,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;formerType?: \$EntityType | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];formerType?: \$EntityType | null; formerTypes?: (\$EntityType)[];deleted?: Temporal.Instant | null;} , options: { @@ -110484,7 +113522,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;formerType?: \$EntityType | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];formerType?: \$EntityType | null; formerTypes?: (\$EntityType)[];deleted?: Temporal.Instant | null;} = {}, @@ -110737,13 +113775,27 @@ get formerTypes(): (\$EntityType)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111124,7 +114176,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111166,7 +114218,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111245,13 +114297,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111509,7 +114575,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111551,7 +114617,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111630,13 +114696,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",{\\"litepub\\":\\"http://litepub.social/ns#\\",\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"EmojiReact\\":\\"litepub:EmojiReact\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111892,7 +114972,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111934,7 +115014,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112013,13 +115093,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"sensitive\\":\\"as:sensitive\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -112270,7 +115364,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -112306,7 +115400,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -112396,13 +115490,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -112654,7 +115762,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112696,7 +115804,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112775,13 +115883,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context diff --git a/packages/vocab-tools/src/__snapshots__/class.test.ts.node.snap b/packages/vocab-tools/src/__snapshots__/class.test.ts.node.snap index 55fff07d5..ecd4871f3 100644 --- a/packages/vocab-tools/src/__snapshots__/class.test.ts.node.snap +++ b/packages/vocab-tools/src/__snapshots__/class.test.ts.node.snap @@ -46,9 +46,34 @@ function isValidLanguageTag(language: string): boolean { } } +const extraPropertyContexts: Readonly> = + {\\"https://schema.org/translator\\":\\"https://w3id.org/fep/22cd\\",\\"https://w3id.org/fep/22cd#translations\\":\\"https://w3id.org/fep/22cd\\"}; + +function getExtraContexts(document: unknown): string[] { + const contexts = new Set(); + const pending: unknown[] = [document]; + while (pending.length > 0) { + const value = pending.pop(); + if (value == null || typeof value !== \\"object\\") continue; + if (Array.isArray(value)) { + for (const item of value) pending.push(item); + continue; + } + if (\\"@value\\" in value) continue; + for (const [key, child] of globalThis.Object.entries(value)) { + if (key === \\"@context\\") continue; + if (globalThis.Object.hasOwn(extraPropertyContexts, key)) { + contexts.add(extraPropertyContexts[key]); + } + pending.push(child); + } + } + return [...contexts]; +} + const PORTABLE_IRI_PATTERN = /^ap(?:\\\\+ef61)?:\\\\/\\\\//i; -const PORTABLE_IRI_KEYS: ReadonlySet = new Set([\\"@id\\",\\"_misskey_quote\\",\\"actor\\",\\"alsoKnownAs\\",\\"announceAuthorization\\",\\"anyOf\\",\\"approvedBy\\",\\"assertionMethod\\",\\"attachment\\",\\"attributedTo\\",\\"audience\\",\\"automaticApproval\\",\\"bcc\\",\\"bto\\",\\"cc\\",\\"context\\",\\"controller\\",\\"current\\",\\"describes\\",\\"emojiReactions\\",\\"featureAuthorization\\",\\"featured\\",\\"featuredCollections\\",\\"featuredObject\\",\\"featuredTags\\",\\"first\\",\\"followers\\",\\"followersOf\\",\\"following\\",\\"followingOf\\",\\"generator\\",\\"href\\",\\"http://fedibird.com/ns#emojiReactions\\",\\"http://fedibird.com/ns#quoteUri\\",\\"http://joinmastodon.org/ns#featured\\",\\"http://joinmastodon.org/ns#featuredTags\\",\\"http://www.w3.org/ns/ldp#inbox\\",\\"https://gotosocial.org/ns#announceAuthorization\\",\\"https://gotosocial.org/ns#approvedBy\\",\\"https://gotosocial.org/ns#automaticApproval\\",\\"https://gotosocial.org/ns#interactingObject\\",\\"https://gotosocial.org/ns#interactionTarget\\",\\"https://gotosocial.org/ns#likeAuthorization\\",\\"https://gotosocial.org/ns#manualApproval\\",\\"https://gotosocial.org/ns#replyAuthorization\\",\\"https://misskey-hub.net/ns#_misskey_quote\\",\\"https://w3id.org/fep/044f#quote\\",\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"https://w3id.org/fep/5711#followersOf\\",\\"https://w3id.org/fep/5711#followingOf\\",\\"https://w3id.org/fep/5711#inboxOf\\",\\"https://w3id.org/fep/5711#likedOf\\",\\"https://w3id.org/fep/5711#likesOf\\",\\"https://w3id.org/fep/5711#outboxOf\\",\\"https://w3id.org/fep/5711#repliesOf\\",\\"https://w3id.org/fep/5711#sharesOf\\",\\"https://w3id.org/fep/7aa9#featureAuthorization\\",\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"https://w3id.org/fep/7aa9#featuredObject\\",\\"https://w3id.org/security#assertionMethod\\",\\"https://w3id.org/security#controller\\",\\"https://w3id.org/security#owner\\",\\"https://w3id.org/security#proof\\",\\"https://w3id.org/security#publicKey\\",\\"https://w3id.org/security#verificationMethod\\",\\"https://w3id.org/valueflows/ont/vf#resourceConformsTo\\",\\"https://w3id.org/valueflows/ont/vf#satisfies\\",\\"https://www.w3.org/ns/activitystreams#actor\\",\\"https://www.w3.org/ns/activitystreams#alsoKnownAs\\",\\"https://www.w3.org/ns/activitystreams#anyOf\\",\\"https://www.w3.org/ns/activitystreams#attachment\\",\\"https://www.w3.org/ns/activitystreams#attributedTo\\",\\"https://www.w3.org/ns/activitystreams#audience\\",\\"https://www.w3.org/ns/activitystreams#bcc\\",\\"https://www.w3.org/ns/activitystreams#bto\\",\\"https://www.w3.org/ns/activitystreams#cc\\",\\"https://www.w3.org/ns/activitystreams#context\\",\\"https://www.w3.org/ns/activitystreams#current\\",\\"https://www.w3.org/ns/activitystreams#describes\\",\\"https://www.w3.org/ns/activitystreams#first\\",\\"https://www.w3.org/ns/activitystreams#followers\\",\\"https://www.w3.org/ns/activitystreams#following\\",\\"https://www.w3.org/ns/activitystreams#generator\\",\\"https://www.w3.org/ns/activitystreams#href\\",\\"https://www.w3.org/ns/activitystreams#icon\\",\\"https://www.w3.org/ns/activitystreams#image\\",\\"https://www.w3.org/ns/activitystreams#inReplyTo\\",\\"https://www.w3.org/ns/activitystreams#instrument\\",\\"https://www.w3.org/ns/activitystreams#items\\",\\"https://www.w3.org/ns/activitystreams#last\\",\\"https://www.w3.org/ns/activitystreams#liked\\",\\"https://www.w3.org/ns/activitystreams#likes\\",\\"https://www.w3.org/ns/activitystreams#location\\",\\"https://www.w3.org/ns/activitystreams#movedTo\\",\\"https://www.w3.org/ns/activitystreams#next\\",\\"https://www.w3.org/ns/activitystreams#oauthAuthorizationEndpoint\\",\\"https://www.w3.org/ns/activitystreams#oauthTokenEndpoint\\",\\"https://www.w3.org/ns/activitystreams#object\\",\\"https://www.w3.org/ns/activitystreams#oneOf\\",\\"https://www.w3.org/ns/activitystreams#origin\\",\\"https://www.w3.org/ns/activitystreams#outbox\\",\\"https://www.w3.org/ns/activitystreams#partOf\\",\\"https://www.w3.org/ns/activitystreams#prev\\",\\"https://www.w3.org/ns/activitystreams#preview\\",\\"https://www.w3.org/ns/activitystreams#provideClientKey\\",\\"https://www.w3.org/ns/activitystreams#proxyUrl\\",\\"https://www.w3.org/ns/activitystreams#quoteUrl\\",\\"https://www.w3.org/ns/activitystreams#relationship\\",\\"https://www.w3.org/ns/activitystreams#replies\\",\\"https://www.w3.org/ns/activitystreams#result\\",\\"https://www.w3.org/ns/activitystreams#sharedInbox\\",\\"https://www.w3.org/ns/activitystreams#shares\\",\\"https://www.w3.org/ns/activitystreams#signClientKey\\",\\"https://www.w3.org/ns/activitystreams#streams\\",\\"https://www.w3.org/ns/activitystreams#subject\\",\\"https://www.w3.org/ns/activitystreams#tag\\",\\"https://www.w3.org/ns/activitystreams#target\\",\\"https://www.w3.org/ns/activitystreams#to\\",\\"https://www.w3.org/ns/activitystreams#units\\",\\"https://www.w3.org/ns/activitystreams#uploadMedia\\",\\"https://www.w3.org/ns/activitystreams#url\\",\\"https://www.w3.org/ns/did#service\\",\\"https://www.w3.org/ns/did#serviceEndpoint\\",\\"icon\\",\\"id\\",\\"image\\",\\"inReplyTo\\",\\"inbox\\",\\"inboxOf\\",\\"instrument\\",\\"interactingObject\\",\\"interactionTarget\\",\\"items\\",\\"last\\",\\"likeAuthorization\\",\\"liked\\",\\"likedOf\\",\\"likes\\",\\"likesOf\\",\\"location\\",\\"manualApproval\\",\\"movedTo\\",\\"next\\",\\"oauthAuthorizationEndpoint\\",\\"oauthTokenEndpoint\\",\\"object\\",\\"oneOf\\",\\"orderedItems\\",\\"origin\\",\\"outbox\\",\\"outboxOf\\",\\"owner\\",\\"partOf\\",\\"prev\\",\\"preview\\",\\"proof\\",\\"provideClientKey\\",\\"proxyUrl\\",\\"publicKey\\",\\"quote\\",\\"quoteAuthorization\\",\\"quoteUri\\",\\"quoteUrl\\",\\"relationship\\",\\"replies\\",\\"repliesOf\\",\\"replyAuthorization\\",\\"resourceConformsTo\\",\\"result\\",\\"satisfies\\",\\"service\\",\\"sharedInbox\\",\\"shares\\",\\"sharesOf\\",\\"signClientKey\\",\\"streams\\",\\"subject\\",\\"tag\\",\\"target\\",\\"to\\",\\"units\\",\\"uploadMedia\\",\\"url\\"]); +const PORTABLE_IRI_KEYS: ReadonlySet = new Set([\\"@id\\",\\"_misskey_quote\\",\\"actor\\",\\"alsoKnownAs\\",\\"announceAuthorization\\",\\"anyOf\\",\\"approvedBy\\",\\"assertionMethod\\",\\"attachment\\",\\"attributedTo\\",\\"audience\\",\\"automaticApproval\\",\\"bcc\\",\\"bto\\",\\"cc\\",\\"context\\",\\"controller\\",\\"current\\",\\"describes\\",\\"emojiReactions\\",\\"featureAuthorization\\",\\"featured\\",\\"featuredCollections\\",\\"featuredObject\\",\\"featuredTags\\",\\"first\\",\\"followers\\",\\"followersOf\\",\\"following\\",\\"followingOf\\",\\"generator\\",\\"href\\",\\"http://fedibird.com/ns#emojiReactions\\",\\"http://fedibird.com/ns#quoteUri\\",\\"http://joinmastodon.org/ns#featured\\",\\"http://joinmastodon.org/ns#featuredTags\\",\\"http://www.w3.org/ns/ldp#inbox\\",\\"https://gotosocial.org/ns#announceAuthorization\\",\\"https://gotosocial.org/ns#approvedBy\\",\\"https://gotosocial.org/ns#automaticApproval\\",\\"https://gotosocial.org/ns#interactingObject\\",\\"https://gotosocial.org/ns#interactionTarget\\",\\"https://gotosocial.org/ns#likeAuthorization\\",\\"https://gotosocial.org/ns#manualApproval\\",\\"https://gotosocial.org/ns#replyAuthorization\\",\\"https://misskey-hub.net/ns#_misskey_quote\\",\\"https://schema.org/isBasedOn\\",\\"https://schema.org/translationOfWork\\",\\"https://schema.org/translator\\",\\"https://w3id.org/fep/044f#quote\\",\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"https://w3id.org/fep/5711#followersOf\\",\\"https://w3id.org/fep/5711#followingOf\\",\\"https://w3id.org/fep/5711#inboxOf\\",\\"https://w3id.org/fep/5711#likedOf\\",\\"https://w3id.org/fep/5711#likesOf\\",\\"https://w3id.org/fep/5711#outboxOf\\",\\"https://w3id.org/fep/5711#repliesOf\\",\\"https://w3id.org/fep/5711#sharesOf\\",\\"https://w3id.org/fep/7aa9#featureAuthorization\\",\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"https://w3id.org/fep/7aa9#featuredObject\\",\\"https://w3id.org/security#assertionMethod\\",\\"https://w3id.org/security#controller\\",\\"https://w3id.org/security#owner\\",\\"https://w3id.org/security#proof\\",\\"https://w3id.org/security#publicKey\\",\\"https://w3id.org/security#verificationMethod\\",\\"https://w3id.org/valueflows/ont/vf#resourceConformsTo\\",\\"https://w3id.org/valueflows/ont/vf#satisfies\\",\\"https://www.w3.org/ns/activitystreams#actor\\",\\"https://www.w3.org/ns/activitystreams#alsoKnownAs\\",\\"https://www.w3.org/ns/activitystreams#anyOf\\",\\"https://www.w3.org/ns/activitystreams#attachment\\",\\"https://www.w3.org/ns/activitystreams#attributedTo\\",\\"https://www.w3.org/ns/activitystreams#audience\\",\\"https://www.w3.org/ns/activitystreams#bcc\\",\\"https://www.w3.org/ns/activitystreams#bto\\",\\"https://www.w3.org/ns/activitystreams#cc\\",\\"https://www.w3.org/ns/activitystreams#context\\",\\"https://www.w3.org/ns/activitystreams#current\\",\\"https://www.w3.org/ns/activitystreams#describes\\",\\"https://www.w3.org/ns/activitystreams#first\\",\\"https://www.w3.org/ns/activitystreams#followers\\",\\"https://www.w3.org/ns/activitystreams#following\\",\\"https://www.w3.org/ns/activitystreams#generator\\",\\"https://www.w3.org/ns/activitystreams#href\\",\\"https://www.w3.org/ns/activitystreams#icon\\",\\"https://www.w3.org/ns/activitystreams#image\\",\\"https://www.w3.org/ns/activitystreams#inReplyTo\\",\\"https://www.w3.org/ns/activitystreams#instrument\\",\\"https://www.w3.org/ns/activitystreams#items\\",\\"https://www.w3.org/ns/activitystreams#last\\",\\"https://www.w3.org/ns/activitystreams#liked\\",\\"https://www.w3.org/ns/activitystreams#likes\\",\\"https://www.w3.org/ns/activitystreams#location\\",\\"https://www.w3.org/ns/activitystreams#movedTo\\",\\"https://www.w3.org/ns/activitystreams#next\\",\\"https://www.w3.org/ns/activitystreams#oauthAuthorizationEndpoint\\",\\"https://www.w3.org/ns/activitystreams#oauthTokenEndpoint\\",\\"https://www.w3.org/ns/activitystreams#object\\",\\"https://www.w3.org/ns/activitystreams#oneOf\\",\\"https://www.w3.org/ns/activitystreams#origin\\",\\"https://www.w3.org/ns/activitystreams#outbox\\",\\"https://www.w3.org/ns/activitystreams#partOf\\",\\"https://www.w3.org/ns/activitystreams#prev\\",\\"https://www.w3.org/ns/activitystreams#preview\\",\\"https://www.w3.org/ns/activitystreams#provideClientKey\\",\\"https://www.w3.org/ns/activitystreams#proxyUrl\\",\\"https://www.w3.org/ns/activitystreams#quoteUrl\\",\\"https://www.w3.org/ns/activitystreams#relationship\\",\\"https://www.w3.org/ns/activitystreams#replies\\",\\"https://www.w3.org/ns/activitystreams#result\\",\\"https://www.w3.org/ns/activitystreams#sharedInbox\\",\\"https://www.w3.org/ns/activitystreams#shares\\",\\"https://www.w3.org/ns/activitystreams#signClientKey\\",\\"https://www.w3.org/ns/activitystreams#streams\\",\\"https://www.w3.org/ns/activitystreams#subject\\",\\"https://www.w3.org/ns/activitystreams#tag\\",\\"https://www.w3.org/ns/activitystreams#target\\",\\"https://www.w3.org/ns/activitystreams#to\\",\\"https://www.w3.org/ns/activitystreams#units\\",\\"https://www.w3.org/ns/activitystreams#uploadMedia\\",\\"https://www.w3.org/ns/activitystreams#url\\",\\"https://www.w3.org/ns/did#service\\",\\"https://www.w3.org/ns/did#serviceEndpoint\\",\\"icon\\",\\"id\\",\\"image\\",\\"inReplyTo\\",\\"inbox\\",\\"inboxOf\\",\\"instrument\\",\\"interactingObject\\",\\"interactionTarget\\",\\"isBasedOn\\",\\"items\\",\\"last\\",\\"likeAuthorization\\",\\"liked\\",\\"likedOf\\",\\"likes\\",\\"likesOf\\",\\"location\\",\\"manualApproval\\",\\"movedTo\\",\\"next\\",\\"oauthAuthorizationEndpoint\\",\\"oauthTokenEndpoint\\",\\"object\\",\\"oneOf\\",\\"orderedItems\\",\\"origin\\",\\"outbox\\",\\"outboxOf\\",\\"owner\\",\\"partOf\\",\\"prev\\",\\"preview\\",\\"proof\\",\\"provideClientKey\\",\\"proxyUrl\\",\\"publicKey\\",\\"quote\\",\\"quoteAuthorization\\",\\"quoteUri\\",\\"quoteUrl\\",\\"relationship\\",\\"replies\\",\\"repliesOf\\",\\"replyAuthorization\\",\\"resourceConformsTo\\",\\"result\\",\\"satisfies\\",\\"service\\",\\"sharedInbox\\",\\"shares\\",\\"sharesOf\\",\\"signClientKey\\",\\"streams\\",\\"subject\\",\\"tag\\",\\"target\\",\\"to\\",\\"translationOfWork\\",\\"translator\\",\\"units\\",\\"uploadMedia\\",\\"url\\"]); import * as _ppM0 from \\"./preprocessors.ts\\"; @@ -209,7 +234,8 @@ export class Object { #_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization: (AnnounceAuthorization | URL)[] = []; #_trust_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization: Set = new Set(); - + #_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations: (Translation)[] = []; + /** * Constructs a new instance of Object with the given values. * @param values The values to initialize the instance with. @@ -235,7 +261,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -1182,6 +1208,21 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu ); } } + + if (\\"translations\\" in values && values.translations != null) { + + if (Array.isArray(values.translations) && + values.translations.every(v => v instanceof Translation)) { + // @ts-ignore: type is checked above. + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = values.translations; + + } else { + throw new TypeError( + \\"The translations must be an array of type \\" + + \\"Translation\\" + \\".\\", + ); + } + } } /** @@ -1210,7 +1251,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -2169,6 +2210,21 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu ); } } + clone.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + if (\\"translations\\" in values && values.translations != null) { + + if (Array.isArray(values.translations) && + values.translations.every(v => v instanceof Translation)) { + // @ts-ignore: type is checked above. + clone.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = values.translations; + + } else { + throw new TypeError( + \\"The translations must be an array of type \\" + + \\"Translation\\" + \\".\\", + ); + } + } return clone; } @@ -9153,6 +9209,18 @@ get urls(): ((URL | Link))[] { return v; } +/** Translation metadata for the language versions in this object's content, + * name, or summary maps, as defined by the draft + * [FEP-22cd](https://w3id.org/fep/22cd). Each entry describes one translated + * language; directly authored languages have no entry. The entries share + * this object's identity, replies, and reactions. Translator credit grants + * no authority to update the object. + * + */ +get translations(): (Translation)[] { + return this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + } + /** * Converts this object to a JSON-LD structure. * @param options The options to use. @@ -9940,6 +10008,26 @@ get urls(): ((URL | Link))[] { } + compactItems = []; + for (const v of this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations) { + const item = ( + await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"translations\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + result[\\"type\\"] = \\"Object\\"; if (this.id != null) result[\\"id\\"] = formatIri(this.id); result[\\"@context\\"] = [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; @@ -10713,6 +10801,26 @@ get urls(): ((URL | Link))[] { } + array = []; + for (const v of this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations) { + let element = ( + await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://w3id.org/fep/22cd#translations\\"] = propValue; + + } + values[\\"@type\\"] = [\\"https://www.w3.org/ns/activitystreams#Object\\"]; if (this.id != null) values[\\"@id\\"] = formatIri(this.id); if (options.format === \\"expand\\") { @@ -10724,13 +10832,27 @@ get urls(): ((URL | Link))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -10776,6 +10898,11 @@ get urls(): ((URL | Link))[] { this.#_2MHQfh2N74MMmDLDqYWFo7TxYQK2_interactionPolicy.length > 0 ) return false; + if ( + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations != null && + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 0 + ) return false; + return true; } @@ -12688,6 +12815,38 @@ get urls(): ((URL | Link))[] { } instance.#_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization = _446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization; + const _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations: (Translation)[] = []; + + let _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array = values[\\"https://w3id.org/fep/22cd#translations\\"]; + + for ( + const v of _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array == null + ? [] + : _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array.length === 1 && \\"@list\\" in _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array[0] + ? _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array[0][\\"@list\\"] + : _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array + ) { + if (v == null) continue; + + const decoded = + await Translation.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.push(decoded); + + } + instance.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; instance._shouldCacheJsonLd = shouldCacheJsonLd; if ( @@ -13579,6 +13738,28 @@ get urls(): ((URL | Link))[] { proxy.announceAuthorization = _446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization[0]; } + const _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 1 + || !(\\"translation\\" in proxy) + && _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 0) { + proxy.translations = _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + } + return proxy; } } @@ -13642,7 +13823,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -13678,7 +13859,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -13768,13 +13949,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -14037,7 +14232,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -14112,7 +14307,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -14851,13 +15046,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -15310,7 +15519,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -15592,7 +15801,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -18107,13 +18316,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -18924,7 +19147,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -18966,7 +19189,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -19045,13 +19268,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"litepub\\":\\"http://litepub.social/ns#\\",\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"EmojiReact\\":\\"litepub:EmojiReact\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -19627,13 +19864,27 @@ name?: string | LanguageString | null;value?: string | LanguageString | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -20320,13 +20571,27 @@ unit?: string | null;numericalValue?: Decimal | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -20690,7 +20955,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -20752,7 +21017,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -21403,13 +21668,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -21793,7 +22072,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -21835,7 +22114,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -21914,13 +22193,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -22648,13 +22941,27 @@ canFeature?: InteractionRule | null;canLike?: InteractionRule | null;canReply?: }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -23596,13 +23903,27 @@ get manualApprovals(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://gotosocial.org/ns\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -23977,7 +24298,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -24039,7 +24360,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -24690,13 +25011,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -25079,7 +25414,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -25121,7 +25456,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -25200,13 +25535,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -25471,7 +25820,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -25533,7 +25882,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -26184,13 +26533,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -26573,7 +26936,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -26615,7 +26978,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -26694,13 +27057,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -26965,7 +27342,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -27027,7 +27404,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -27677,13 +28054,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -28066,7 +28457,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -28108,7 +28499,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -28187,13 +28578,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -28379,34 +28784,1799 @@ instruments?: (Object | URL)[];} return instance; } - protected override _getCustomInspectProxy(): Record { - const proxy: Record = super._getCustomInspectProxy(); + protected override _getCustomInspectProxy(): Record { + const proxy: Record = super._getCustomInspectProxy(); + return proxy; + } + } + + +// deno-lint-ignore no-explicit-any +(QuoteRequest.prototype as any)[Symbol.for(\\"Deno.customInspect\\")] = + function ( + this: QuoteRequest, + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string { + const proxy = this._getCustomInspectProxy(); + return \\"QuoteRequest \\" + inspect(proxy, options); + }; + +// deno-lint-ignore no-explicit-any +(QuoteRequest.prototype as any)[Symbol.for(\\"nodejs.util.inspect.custom\\")] = + function ( + this: QuoteRequest, + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string { + const proxy = this._getCustomInspectProxy(); + return \\"QuoteRequest \\" + inspect(proxy, options); + }; + /** Translator credit and source freshness for one language version of an + * {@link Object}, as defined by the draft + * [FEP-22cd](https://w3id.org/fep/22cd). This is embedded metadata, not an + * independent post or activity target. Its optional identifier need not be + * dereferenceable and does not establish trust in embedded translator actors. + * + * Targets [draft revision 6d0d6559](https://codeberg.org/fediverse/fep/src/commit/6d0d6559054baeb7b71a5f2bdc14fc4c09b66f39/fep/22cd/fep-22cd.md). + * + */ +export class Translation { + + readonly #documentLoader?: DocumentLoader; + readonly #contextLoader?: DocumentLoader; + readonly #tracerProvider?: TracerProvider; + readonly #warning?: { + category: string[]; + message: string; + values?: Record; + }; + #cachedJsonLd?: unknown; + readonly #_baseUrl?: URL; + #shouldCacheJsonLd = true; + readonly id: URL | null; + + protected get _documentLoader(): DocumentLoader | undefined { + return this.#documentLoader; + } + + protected get _contextLoader(): DocumentLoader | undefined { + return this.#contextLoader; + } + + protected get _tracerProvider(): TracerProvider | undefined { + return this.#tracerProvider; + } + + protected get _warning(): { + category: string[]; + message: string; + values?: Record; + } | undefined { + return this.#warning; + } + + protected get _cachedJsonLd(): unknown | undefined { + return this.#cachedJsonLd; + } + + protected set _cachedJsonLd(value: unknown | undefined) { + this.#cachedJsonLd = value; + } + + protected get _baseUrl(): URL | undefined { + return this.#_baseUrl; + } + + protected get _shouldCacheJsonLd(): boolean { + return this.#shouldCacheJsonLd; + } + + protected set _shouldCacheJsonLd(value: boolean) { + this.#shouldCacheJsonLd = value; + } + + protected static _shouldCacheDecodedJsonLd(value: unknown): boolean { + if (value == null || typeof value !== \\"object\\") return true; + if (!(\\"_shouldCacheJsonLd\\" in value)) return true; + return (value as { _shouldCacheJsonLd: boolean })._shouldCacheJsonLd; + } + + /** + * The type URI of {@link Translation}: \`https://w3id.org/fep/22cd#Translation\`. + */ + static get typeId(): URL { + return new URL(\\"https://w3id.org/fep/22cd#Translation\\"); + } + #_diXuPmFWiEqfLPhhrxg6Xc7ixZG: (Intl.Locale)[] = []; + + #_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: (Application | Group | Organization | Person | Service | URL)[] = []; + #_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: Set = new Set(); + #_Msz9PwRg7cWkiXPL4ixyQLtuuH7: (URL)[] = []; +#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated: (Temporal.Instant)[] = []; +#_4KvkQNz1JjGs8S7iJDcGrUYETbUW: (URL)[] = []; +#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url: ((URL | Link))[] = []; + + /** + * Constructs a new instance of Translation with the given values. + * @param values The values to initialize the instance with. + * @param options The options to use for initialization. + */ + constructor( + values: + { +id?: URL | null; +language?: Intl.Locale | null;translator?: Application | Group | Organization | Person | Service | URL | null; +translators?: (Application | Group | Organization | Person | Service | URL)[];original?: URL | null;sourceUpdated?: Temporal.Instant | null;basis?: URL | null;url?: URL | Link | null; +urls?: ((URL | Link))[];} +, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + } = {}, + ) { + + this.#documentLoader = options.documentLoader; + this.#contextLoader = options.contextLoader; + this.#tracerProvider = options.tracerProvider; + const baseUrl = (options as { baseUrl?: URL }).baseUrl; + this.#_baseUrl = baseUrl == null ? undefined : new URL(baseUrl.href); + if (\\"$warning\\" in options) { + this.#warning = options.$warning as unknown as { + category: string[]; + message: string; + values?: Record; + }; + } + if (values.id == null || values.id instanceof URL) { + this.id = values.id ?? null; + } else { + throw new TypeError(\\"The id must be a URL.\\"); + } + + if (\\"language\\" in values && values.language != null) { + if (values.language instanceof Intl.Locale) { + // @ts-ignore: type is checked above. + this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = [values.language]; + + } else { + throw new TypeError( + \\"The language must be of type \\" + + \\"Intl.Locale\\" + \\".\\", + ); + } + } + + if (\\"translator\\" in values && values.translator != null) { + if (values.translator instanceof Application || values.translator instanceof Group || values.translator instanceof Organization || values.translator instanceof Person || values.translator instanceof Service || values.translator instanceof URL) { + // @ts-ignore: type is checked above. + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = [values.translator]; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(0); + } else { + throw new TypeError( + \\"The translator must be of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + + if (\\"translators\\" in values && values.translators != null) { + + if (\\"translator\\" in values && + values.translator != null) { + throw new TypeError( + \\"Cannot initialize both translator and \\" + + \\"translators at the same time.\\", + ); + } + + if (Array.isArray(values.translators) && + values.translators.every(v => v instanceof Application || v instanceof Group || v instanceof Organization || v instanceof Person || v instanceof Service || v instanceof URL)) { + // @ts-ignore: type is checked above. + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = values.translators; + + for (let i = 0; i < values.translators.length; i++) { + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + } + + } else { + throw new TypeError( + \\"The translators must be an array of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + + if (\\"original\\" in values && values.original != null) { + if (values.original instanceof URL) { + // @ts-ignore: type is checked above. + this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = [values.original]; + + } else { + throw new TypeError( + \\"The original must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + + if (\\"sourceUpdated\\" in values && values.sourceUpdated != null) { + if (isTemporalInstant(values.sourceUpdated)) { + // @ts-ignore: type is checked above. + this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = [values.sourceUpdated]; + + } else { + throw new TypeError( + \\"The sourceUpdated must be of type \\" + + \\"Temporal.Instant\\" + \\".\\", + ); + } + } + + if (\\"basis\\" in values && values.basis != null) { + if (values.basis instanceof URL) { + // @ts-ignore: type is checked above. + this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = [values.basis]; + + } else { + throw new TypeError( + \\"The basis must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + + if (\\"url\\" in values && values.url != null) { + if (values.url instanceof URL || values.url instanceof Link) { + // @ts-ignore: type is checked above. + this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = [values.url]; + + } else { + throw new TypeError( + \\"The url must be of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + + if (\\"urls\\" in values && values.urls != null) { + + if (\\"url\\" in values && + values.url != null) { + throw new TypeError( + \\"Cannot initialize both url and \\" + + \\"urls at the same time.\\", + ); + } + + if (Array.isArray(values.urls) && + values.urls.every(v => v instanceof URL || v instanceof Link)) { + // @ts-ignore: type is checked above. + this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = values.urls; + + } else { + throw new TypeError( + \\"The urls must be an array of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + } + + /** + * Clones this instance, optionally updating it with the given values. + * @param values The values to update the clone with. + * @param options The options to use for cloning. + * @returns The cloned instance. + */ + clone( + values: + { +id?: URL | null; +language?: Intl.Locale | null;translator?: Application | Group | Organization | Person | Service | URL | null; +translators?: (Application | Group | Organization | Person | Service | URL)[];original?: URL | null;sourceUpdated?: Temporal.Instant | null;basis?: URL | null;url?: URL | Link | null; +urls?: ((URL | Link))[];} + + = {}, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + } = {} + ): Translation { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + // @ts-ignore: $warning is not recognized as a property, but it is. + options = { ...options, $warning: this._warning }; + } + + // @ts-ignore: this.constructor is not recognized as a constructor, but it is. + const clone: Translation = new this.constructor( + { id: values.id ?? this.id }, + options + ); + clone.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG; + if (\\"language\\" in values && values.language != null) { + if (values.language instanceof Intl.Locale) { + // @ts-ignore: type is checked above. + clone.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = [values.language]; + + } else { + throw new TypeError( + \\"The language must be of type \\" + + \\"Intl.Locale\\" + \\".\\", + ); + } + } + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR;clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set(this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR); + if (\\"translator\\" in values && values.translator != null) { + if (values.translator instanceof Application || values.translator instanceof Group || values.translator instanceof Organization || values.translator instanceof Person || values.translator instanceof Service || values.translator instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = [values.translator]; + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set([0]); + } else { + throw new TypeError( + \\"The translator must be of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + + if (\\"translators\\" in values && values.translators != null) { + + if (\\"translator\\" in values && + values.translator != null) { + throw new TypeError( + \\"Cannot update both translator and \\" + + \\"translators at the same time.\\", + ); + } + + if (Array.isArray(values.translators) && + values.translators.every(v => v instanceof Application || v instanceof Group || v instanceof Organization || v instanceof Person || v instanceof Service || v instanceof URL)) { + // @ts-ignore: type is checked above. + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = values.translators; + + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set(); + for (let i = 0; i < values.translators.length; i++) { + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + } + + } else { + throw new TypeError( + \\"The translators must be an array of type \\" + + \\"Application | Group | Organization | Person | Service | URL\\" + \\".\\", + ); + } + } + clone.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7; + if (\\"original\\" in values && values.original != null) { + if (values.original instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = [values.original]; + + } else { + throw new TypeError( + \\"The original must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + clone.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated; + if (\\"sourceUpdated\\" in values && values.sourceUpdated != null) { + if (isTemporalInstant(values.sourceUpdated)) { + // @ts-ignore: type is checked above. + clone.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = [values.sourceUpdated]; + + } else { + throw new TypeError( + \\"The sourceUpdated must be of type \\" + + \\"Temporal.Instant\\" + \\".\\", + ); + } + } + clone.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW; + if (\\"basis\\" in values && values.basis != null) { + if (values.basis instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = [values.basis]; + + } else { + throw new TypeError( + \\"The basis must be of type \\" + + \\"URL\\" + \\".\\", + ); + } + } + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + if (\\"url\\" in values && values.url != null) { + if (values.url instanceof URL || values.url instanceof Link) { + // @ts-ignore: type is checked above. + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = [values.url]; + + } else { + throw new TypeError( + \\"The url must be of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + + if (\\"urls\\" in values && values.urls != null) { + + if (\\"url\\" in values && + values.url != null) { + throw new TypeError( + \\"Cannot update both url and \\" + + \\"urls at the same time.\\", + ); + } + + if (Array.isArray(values.urls) && + values.urls.every(v => v instanceof URL || v instanceof Link)) { + // @ts-ignore: type is checked above. + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = values.urls; + + } else { + throw new TypeError( + \\"The urls must be an array of type \\" + + \\"URL | Link\\" + \\".\\", + ); + } + } + + return clone; + } + +/** The translated language. Publishers must match a language in the + * containing object's content, name, or summary map. + * + */ + get language(): (Intl.Locale | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG.length < 1) return null; + return this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG[0]; + } + + async #fetchTranslator( + url: URL, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: \\"ignore\\" | \\"throw\\" | \\"trust\\"; + } = {}, + ): Promise { + const documentLoader = + options.documentLoader ?? this._documentLoader ?? getDocumentLoader(); + const contextLoader = + options.contextLoader ?? this._contextLoader ?? getDocumentLoader(); + const tracerProvider = options.tracerProvider ?? + this._tracerProvider ?? trace.getTracerProvider(); + const tracer = tracerProvider.getTracer( + \\"@fedify/vocab-tools\\", + \\"0.0.0\\", + ); + return await tracer.startActiveSpan(\\"activitypub.lookup_object\\", async (span) => { + const lookupUrl = formatIri(url); + let fetchResult: RemoteDocument; + try { + fetchResult = await documentLoader(lookupUrl); + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(error), + }); + span.end(); + if (options.suppressError) { + getLogger([\\"fedify\\", \\"vocab\\"]).error( + \\"Failed to fetch {url}: {error}\\", + { error, url: lookupUrl } + ); + return null; + } + throw error; + } + const { document, documentUrl } = fetchResult; + const baseUrl = parseIri(documentUrl); + try { + const obj = await this.#translator_fromJsonLd( + document, + { documentLoader, contextLoader, tracerProvider, baseUrl } + ); + if (obj?.id != null && !isTrustedIriOrigin(options, obj.id, baseUrl)) { + if (options.crossOrigin === \\"throw\\") { + throw new Error( + \\"The object's @id (\\" + obj.id.href + \\") has a different origin \\" + + \\"than the document URL (\\" + baseUrl.href + \\"); refusing to return \\" + + \\"the object. If you want to bypass this check and are aware of\\" + + 'the security implications, set the crossOrigin option to \\"trust\\".' + ); + } + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"The object's @id ({objectId}) has a different origin than the document \\" + + \\"URL ({documentUrl}); refusing to return the object. If you want to \\" + + \\"bypass this check and are aware of the security implications, \\" + + 'set the crossOrigin option to \\"trust\\".', + { ...fetchResult, objectId: obj.id.href }, + ); + return null; + } + span.setAttribute(\\"activitypub.object.id\\", (obj.id ?? url).href); + span.setAttribute( + \\"activitypub.object.type\\", + // @ts-ignore: obj.constructor always has a typeId. + obj.constructor.typeId.href + ); + return obj; + } catch (e) { + if (options.suppressError) { + getLogger([\\"fedify\\", \\"vocab\\"]).error( + \\"Failed to parse {url}: {error}\\", + { error: e, url: lookupUrl } + ); + return null; + } + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(e), + }); + throw e; + } finally { + span.end(); + } + }); + } + + async #translator_fromJsonLd( + jsonLd: unknown, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL + } + ): Promise { + const documentLoader = + options.documentLoader ?? this._documentLoader ?? getDocumentLoader(); + const contextLoader = + options.contextLoader ?? this._contextLoader ?? getDocumentLoader(); + const tracerProvider = options.tracerProvider ?? + this._tracerProvider ?? trace.getTracerProvider(); + const baseUrl = options.baseUrl; + + try { + return await Application.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Group.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Organization.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Person.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Service.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + throw new TypeError(\\"Expected an object of any type of: \\" + + [\\"https://www.w3.org/ns/activitystreams#Application\\",\\"https://www.w3.org/ns/activitystreams#Group\\",\\"https://www.w3.org/ns/activitystreams#Organization\\",\\"https://www.w3.org/ns/activitystreams#Person\\",\\"https://www.w3.org/ns/activitystreams#Service\\"].join(\\", \\")); + } + + + /** + * Similar to + * {@link Translation.getTranslator}, + * but returns its \`@id\` URL instead of the object itself. + */ + get translatorId(): URL | null { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length < 1) return null; + const v = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + if (v instanceof URL) return v; + return v.id; + } + +/** The actors credited for this language version. Their order has no + * meaning. Human actors credit translation or review; Application and + * Service actors credit machine output. If any actor cannot be resolved, + * the entry's human-or-machine status is unknown. Credit is asserted by + * the publisher and grants no publishing authority. Embedded actors with + * identifiers are fetched before being returned unless explicitly trusted. + * + */ + + async getTranslator( + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: \\"ignore\\" | \\"throw\\" | \\"trust\\"; + } = {} + ): Promise { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length < 1) return null; + let v = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + if (!(v instanceof URL) && + v.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(0)) { + v = v.id; + } + if (v instanceof URL) { + const fetched = + await this.#fetchTranslator(v, options); + if (fetched == null) return null; + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0] = fetched; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(0); + this._cachedJsonLd = undefined; + return fetched; + } + + if ( + this._cachedJsonLd != null && + typeof this._cachedJsonLd === \\"object\\" && + \\"@context\\" in this._cachedJsonLd && + \\"translator\\" in this._cachedJsonLd + ) { + const prop = this._cachedJsonLd[ + \\"translator\\"]; + const doc = Array.isArray(prop) ? prop[0] : prop; + if (doc != null && typeof doc === \\"object\\" && \\"@context\\" in doc) { + + v = await this.#translator_fromJsonLd(doc, { + ...options, + baseUrl: (options as { baseUrl?: URL }).baseUrl ?? + this._baseUrl ?? + (this.id != null && + (this.id.protocol === \\"http:\\" || + this.id.protocol === \\"https:\\") + ? this.id + : undefined), + }); + + } + } + + if (v?.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(0)) { + if (options.crossOrigin === \\"throw\\") { + throw new Error( + \\"The property object's @id (\\" + v.id.href + \\") has a different \\" + + \\"origin than the property owner's @id (\\" + \\"untrusted metadata\\" + \\"); \\" + + \\"refusing to return the object. If you want to bypass this \\" + + \\"check and are aware of the security implications, set the \\" + + 'crossOrigin option to \\"trust\\".' + ); + } + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"The property object's @id ({objectId}) has a different origin \\" + + \\"than the property owner's @id ({parentObjectId}); refusing to \\" + + \\"return the object. If you want to bypass this check and are \\" + + \\"aware of the security implications, set the crossOrigin option \\" + + 'to \\"trust\\".', + { objectId: v.id.href, parentObjectId: \\"untrusted metadata\\" }, + ); + return null; + } + return v; + } + + /** + * Similar to + * {@link Translation.getTranslators}, + * but returns their \`@id\`s instead of the objects themselves. + */ + get translatorIds(): URL[] { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + return this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.map((v) => + v instanceof URL ? v : v.id! + ).filter(id => id !== null); + } + +/** The actors credited for this language version. Their order has no + * meaning. Human actors credit translation or review; Application and + * Service actors credit machine output. If any actor cannot be resolved, + * the entry's human-or-machine status is unknown. Credit is asserted by + * the publisher and grants no publishing authority. Embedded actors with + * identifiers are fetched before being returned unless explicitly trusted. + * + */ + + async* getTranslators( + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: \\"ignore\\" | \\"throw\\" | \\"trust\\"; + } = {} + ): AsyncIterable { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + const vs = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + for (let i = 0; i < vs.length; i++) { + let v = vs[i]; + if (!(v instanceof URL) && + v.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(i)) { + v = v.id; + } + if (v instanceof URL) { + const fetched = + await this.#fetchTranslator(v, options); + if (fetched == null) continue; + vs[i] = fetched; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + this._cachedJsonLd = undefined; + yield fetched; + continue; + } + + if ( + this._cachedJsonLd != null && + typeof this._cachedJsonLd === \\"object\\" && + \\"@context\\" in this._cachedJsonLd && + \\"translator\\" in this._cachedJsonLd + ) { + const prop = this._cachedJsonLd[ + \\"translator\\"]; + const obj = Array.isArray(prop) ? prop[i] : prop; + if (obj != null && typeof obj === \\"object\\" && \\"@context\\" in obj) { + + v = await this.#translator_fromJsonLd(obj, { + ...options, + baseUrl: (options as { baseUrl?: URL }).baseUrl ?? + this._baseUrl ?? + (this.id != null && + (this.id.protocol === \\"http:\\" || + this.id.protocol === \\"https:\\") + ? this.id + : undefined), + }); + + } + } + + if (v?.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(i)) { + if (options.crossOrigin === \\"throw\\") { + throw new Error( + \\"The property object's @id (\\" + v.id.href + \\") has a different \\" + + \\"origin than the property owner's @id (\\" + \\"untrusted metadata\\" + \\"); \\" + + \\"refusing to return the object. If you want to bypass this \\" + + \\"check and are aware of the security implications, set the \\" + + 'crossOrigin option to \\"trust\\".' + ); + } + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"The property object's @id ({objectId}) has a different origin \\" + + \\"than the property owner's @id ({parentObjectId}); refusing to \\" + + \\"return the object. If you want to bypass this check and are \\" + + \\"aware of the security implications, set the crossOrigin \\" + + 'option to \\"trust\\".', + { objectId: v.id.href, parentObjectId: \\"untrusted metadata\\" }, + ); + continue; + } + yield v; + } + } + +/** The identifier of the containing object. FEP-22cd translations share + * that object's identity rather than introducing separate posts. + * + */ + get original(): (URL | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7.length < 1) return null; + return this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7[0]; + } + +/** The source object's updated timestamp (or published timestamp if it has + * no updated timestamp) at the last human review of this translation. + * An absent value makes no freshness claim. A value earlier than the + * current source timestamp indicates a potentially stale translation; + * an equal or later value reflects the current source. + * + */ + get sourceUpdated(): (Temporal.Instant | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.length < 1) return null; + return this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated[0]; + } + +/** An optional public revision resource identifying the source reviewed. + * Supplements sourceUpdated without requiring private revision history + * to be exposed. + * + */ + get basis(): (URL | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW.length < 1) return null; + return this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW[0]; + } + +/** Links to renderings of this specific language version. + */ + get url(): (URL | Link | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length < 1) return null; + return this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url[0]; + } + +/** Links to renderings of this specific language version. + */ +get urls(): ((URL | Link))[] { + return this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + } + + /** + * Converts this object to a JSON-LD structure. + * @param options The options to use. + * - \`format\`: The format of the output: \`compact\` or + \`expand\`. + * - \`contextLoader\`: The loader for remote JSON-LD contexts. + * - \`context\`: The JSON-LD context to use. Not applicable + when \`format\` is set to \`'expand'\`. + * @returns The JSON-LD representation of this object. + */ + async toJsonLd(options: { + format?: \\"compact\\" | \\"expand\\", + contextLoader?: DocumentLoader, + context?: string | Record | (string | Record)[], + } = {}): Promise { + if (options.format == null && this._cachedJsonLd != null) { + return this._cachedJsonLd; + } + if (options.format !== \\"compact\\" && options.context != null) { + throw new TypeError( + \\"The context option can only be used when the format option is set \\" + + \\"to 'compact'.\\" + ); + } + options = { + ...options, + contextLoader: options.contextLoader ?? getDocumentLoader(), + }; + + if (options.format == null && this.isCompactable()) { + const result: Record = {}; + // deno-lint-ignore no-unused-vars + let compactItems: unknown[]; + + compactItems = []; + for (const v of this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG) { + const item = ( + v.baseName + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"inLanguage\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR) { + const item = ( + v instanceof URL ? formatIri(v) : v instanceof Application ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Group ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Organization ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Person ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"translator\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7) { + const item = ( + formatIri(v) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"translationOfWork\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated) { + const item = ( + v.toString() + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"sourceUpdated\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW) { + const item = ( + formatIri(v) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"isBasedOn\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url) { + const item = ( + v instanceof URL ? formatIri(v) : await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result[\\"url\\"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + result[\\"type\\"] = \\"Translation\\"; + if (this.id != null) result[\\"id\\"] = formatIri(this.id); + result[\\"@context\\"] = [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/22cd\\"]; + return result; + } + + // deno-lint-ignore no-unused-vars prefer-const + let array: unknown[]; + const values: Record = {}; + array = []; + for (const v of this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG) { + let element = ( + { \\"@value\\": v.baseName } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/inLanguage\\"] = propValue; + + } + + array = []; + for (const v of this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR) { + let element = ( + v instanceof URL ? { \\"@id\\": formatIri(v) } : v instanceof Application ? await v.toJsonLd(options) : v instanceof Group ? await v.toJsonLd(options) : v instanceof Organization ? await v.toJsonLd(options) : v instanceof Person ? await v.toJsonLd(options) : await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/translator\\"] = propValue; + + } + + array = []; + for (const v of this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7) { + let element = ( + { \\"@id\\": formatIri(v) } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/translationOfWork\\"] = propValue; + + } + + array = []; + for (const v of this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated) { + let element = ( + { + \\"@type\\": \\"http://www.w3.org/2001/XMLSchema#dateTime\\", + \\"@value\\": v.toString(), + } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://w3id.org/fep/22cd#sourceUpdated\\"] = propValue; + + } + + array = []; + for (const v of this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW) { + let element = ( + { \\"@id\\": formatIri(v) } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://schema.org/isBasedOn\\"] = propValue; + + } + + array = []; + for (const v of this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url) { + let element = ( + v instanceof URL ? { \\"@id\\": formatIri(v) } : await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === \\"undefined\\") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values[\\"https://www.w3.org/ns/activitystreams#url\\"] = propValue; + + } + + values[\\"@type\\"] = [\\"https://w3id.org/fep/22cd#Translation\\"]; + if (this.id != null) values[\\"@id\\"] = formatIri(this.id); + if (options.format === \\"expand\\") { + return await jsonld.expand( + values, + { + documentLoader: options.contextLoader, + keepFreeFloatingNodes: true, + }, + ); + } + let docContext: Parameters[1] = options.context ?? + [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/22cd\\"]; + let compacted = await jsonld.compact( + values, + docContext, + { documentLoader: options.contextLoader }, + ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + + if (docContext != null) { + // Embed context + + } + return compacted; + } + + protected isCompactable(): boolean { + + if ( + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR != null && + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 0 + ) return false; + + return true; + } + + /** + * Converts a JSON-LD structure to an object of this type. + * @param json The JSON-LD structure to convert. + * @param options The options to use. + * - \`documentLoader\`: The loader for remote JSON-LD documents. + * - \`contextLoader\`: The loader for remote JSON-LD contexts. + * - \`tracerProvider\`: The OpenTelemetry tracer provider to use. + * If omitted, the global tracer provider is used. + * @returns The object of this type. + * @throws {TypeError} If the given \`json\` is invalid. + */ + static async fromJsonLd( + json: unknown, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL, + } = {}, + ): Promise { + const tracerProvider = options.tracerProvider ?? trace.getTracerProvider(); + const tracer = tracerProvider.getTracer( + \\"@fedify/vocab-tools\\", + \\"0.0.0\\", + ); + return await tracer.startActiveSpan( + \\"activitypub.parse_object\\", + async (span) => { + try { + const object = await this.__fromJsonLd__Translation__( + json, span, options); + if (object.id != null) { + span.setAttribute(\\"activitypub.object.id\\", object.id.href); + } + return object; + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(error), + }); + throw error; + } finally { + span.end(); + } + }, + ); + } + + protected static async __fromJsonLd__Translation__( + json: unknown, + span: Span, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL, + } = {}, + ): Promise { + if (typeof json === \\"undefined\\") { + throw new TypeError(\\"Invalid JSON-LD: undefined.\\"); + } + else if (json === null) throw new TypeError(\\"Invalid JSON-LD: null.\\"); + options = { + ...options, + documentLoader: options.documentLoader ?? getDocumentLoader(), + contextLoader: options.contextLoader ?? getDocumentLoader(), + tracerProvider: options.tracerProvider ?? trace.getTracerProvider(), + }; + // deno-lint-ignore no-explicit-any + let values: Record & { \\"@id\\"?: string }; + let expanded: unknown[]; + if ( + \\"_fromSubclass\\" in options && + options._fromSubclass && + typeof json === \\"object\\" && + !Array.isArray(json) + ) { + values = + // deno-lint-ignore no-explicit-any + json as (Record & { \\"@id\\"?: string }); + expanded = [values]; + } else if (globalThis.Object.keys(json).length == 0) { + values = {}; + expanded = [values]; + } else { + expanded = await jsonld.expand(json, { + documentLoader: options.contextLoader, + keepFreeFloatingNodes: true, + }); + values = + // deno-lint-ignore no-explicit-any + (expanded[0] ?? {}) as (Record & { \\"@id\\"?: string }); + } + const id = parseJsonLdId(values[\\"@id\\"], options.baseUrl); + if (id != null && options.baseUrl == null) { + options = { ...options, baseUrl: id }; + } + + if (\\"@type\\" in values) { + span.setAttribute(\\"activitypub.object.type\\", values[\\"@type\\"]); + } + if (\\"@type\\" in values && + !values[\\"@type\\"].every(t => t.startsWith(\\"_:\\"))) { + + if (!values[\\"@type\\"].includes(\\"https://w3id.org/fep/22cd#Translation\\")) { + throw new TypeError(\\"Invalid type: \\" + values[\\"@type\\"]); + } + } + + let cacheJsonLd = !(\\"_fromSubclass\\" in options) || !options._fromSubclass + ? normalizeJsonLdIris( + expanded, + PORTABLE_IRI_KEYS, + PORTABLE_IRI_PATTERN, + ) + : undefined; + if (cacheJsonLd != null && cacheJsonLd !== expanded) { + cacheJsonLd = structuredClone(cacheJsonLd); + } + + const instance = new this( + { + id + }, + options, + ); + + let shouldCacheJsonLd = instance._shouldCacheJsonLd; + const _diXuPmFWiEqfLPhhrxg6Xc7ixZG: (Intl.Locale)[] = []; + + let _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array = values[\\"https://schema.org/inLanguage\\"]; + + for ( + const v of _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array == null + ? [] + : _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array.length === 1 && \\"@list\\" in _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array[0] + ? _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array[0][\\"@list\\"] + : _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array + ) { + if (v == null) continue; + + const decoded = + new Intl.Locale(v[\\"@value\\"]) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _diXuPmFWiEqfLPhhrxg6Xc7ixZG.push(decoded); + + } + instance.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = _diXuPmFWiEqfLPhhrxg6Xc7ixZG; + + const _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: (Application | Group | Organization | Person | Service | URL)[] = []; + const _trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: Set = new Set(); + + let _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array = values[\\"https://schema.org/translator\\"]; + + for ( + const v of _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array == null + ? [] + : _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array.length === 1 && \\"@list\\" in _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array[0] + ? _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array[0][\\"@list\\"] + : _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array + ) { + if (v == null) continue; + + if (typeof v === \\"object\\" && \\"@id\\" in v && !(\\"@type\\" in v) + && globalThis.Object.keys(v).length === 1) { + if (v[\\"@id\\"].startsWith(\\"_:\\")) continue; + _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.push(parseIri(v[\\"@id\\"], options.baseUrl)); + continue; + } + + const decoded = + typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Application\\") ? await Application.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Group\\") ? await Group.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Organization\\") ? await Organization.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Person\\") ? await Person.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& v[\\"@type\\"].includes(\\"https://www.w3.org/ns/activitystreams#Service\\") ? await Service.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : undefined + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.push(decoded); + + } + instance.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + const _Msz9PwRg7cWkiXPL4ixyQLtuuH7: (URL)[] = []; + + let _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array = values[\\"https://schema.org/translationOfWork\\"]; + + for ( + const v of _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array == null + ? [] + : _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array.length === 1 && \\"@list\\" in _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array[0] + ? _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array[0][\\"@list\\"] + : _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array + ) { + if (v == null) continue; + + const decoded = + parseIri(v[\\"@id\\"], options.baseUrl) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _Msz9PwRg7cWkiXPL4ixyQLtuuH7.push(decoded); + + } + instance.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = _Msz9PwRg7cWkiXPL4ixyQLtuuH7; + const _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated: (Temporal.Instant)[] = []; + + let _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array = values[\\"https://w3id.org/fep/22cd#sourceUpdated\\"]; + + for ( + const v of _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array == null + ? [] + : _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array.length === 1 && \\"@list\\" in _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array[0] + ? _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array[0][\\"@list\\"] + : _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array + ) { + if (v == null) continue; + + const decoded = + Temporal.Instant.from( + v[\\"@value\\"].substring(19).match(/[Z+-]/) + ? v[\\"@value\\"] + : v[\\"@value\\"] + \\"Z\\" + ) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.push(decoded); + + } + instance.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated; + const _4KvkQNz1JjGs8S7iJDcGrUYETbUW: (URL)[] = []; + + let _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array = values[\\"https://schema.org/isBasedOn\\"]; + + for ( + const v of _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array == null + ? [] + : _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array.length === 1 && \\"@list\\" in _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array[0] + ? _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array[0][\\"@list\\"] + : _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array + ) { + if (v == null) continue; + + const decoded = + parseIri(v[\\"@id\\"], options.baseUrl) + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _4KvkQNz1JjGs8S7iJDcGrUYETbUW.push(decoded); + + } + instance.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = _4KvkQNz1JjGs8S7iJDcGrUYETbUW; + const _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url: ((URL | Link))[] = []; + + let _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array = values[\\"https://www.w3.org/ns/activitystreams#url\\"]; + + for ( + const v of _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array == null + ? [] + : _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array.length === 1 && \\"@list\\" in _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array[0] + ? _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array[0][\\"@list\\"] + : _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array + ) { + if (v == null) continue; + + const decoded = + v != null && typeof v === \\"object\\" && \\"@id\\" in v + && typeof v[\\"@id\\"] === \\"string\\" + && v[\\"@id\\"] !== \\"\\" ? parseIri(v[\\"@id\\"], options.baseUrl) : typeof v === \\"object\\" && \\"@type\\" in v + && Array.isArray(v[\\"@type\\"])&& [\\"https://www.w3.org/ns/activitystreams#Link\\",\\"https://www.w3.org/ns/activitystreams#Hashtag\\",\\"https://www.w3.org/ns/activitystreams#Mention\\"].some( + t => v[\\"@type\\"].includes(t)) ? await Link.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : undefined + ; + + if (typeof decoded === \\"undefined\\") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.push(decoded); + + } + instance.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + + instance._shouldCacheJsonLd = shouldCacheJsonLd; + if ( + shouldCacheJsonLd && + (!(\\"_fromSubclass\\" in options) || !options._fromSubclass) + ) { + try { + if (cacheJsonLd != null && cacheJsonLd !== expanded) { + const compactArray = Array.isArray(json) && json.length === 1; + const jsonLd = compactArray ? json[0] : json; + const normalized = cacheJsonLd; + const cachedJsonLd = await compactJsonLdCache( + normalized, + jsonLd, + options.contextLoader, + ); + instance._cachedJsonLd = compactArray ? [cachedJsonLd] : cachedJsonLd; + } else { + instance._cachedJsonLd = structuredClone(json); + } + } catch { + getLogger([\\"fedify\\", \\"vocab\\"]).warn( + \\"Failed to cache JSON-LD: {json}\\", + { json }, + ); + } + } + return instance; + } + + protected _getCustomInspectProxy(): Record { + + const proxy: Record = {}; + if (this.id != null) { + proxy.id = { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(this.id!.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(this.id!.href, options), + }; + } + + const _diXuPmFWiEqfLPhhrxg6Xc7ixZG = this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_diXuPmFWiEqfLPhhrxg6Xc7ixZG.length == 1) { + proxy.language = _diXuPmFWiEqfLPhhrxg6Xc7ixZG[0]; + } + + const _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length == 1) { + proxy.translator = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + } + + if (_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 1 + || !(\\"translator\\" in proxy) + && _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 0) { + proxy.translators = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + } + + const _Msz9PwRg7cWkiXPL4ixyQLtuuH7 = this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_Msz9PwRg7cWkiXPL4ixyQLtuuH7.length == 1) { + proxy.original = _Msz9PwRg7cWkiXPL4ixyQLtuuH7[0]; + } + + const _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.length == 1) { + proxy.sourceUpdated = _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated[0]; + } + + const _4KvkQNz1JjGs8S7iJDcGrUYETbUW = this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_4KvkQNz1JjGs8S7iJDcGrUYETbUW.length == 1) { + proxy.basis = _4KvkQNz1JjGs8S7iJDcGrUYETbUW[0]; + } + + const _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for(\\"Deno.customInspect\\")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => \\"URL \\" + inspect(v.href, options), + [Symbol.for(\\"nodejs.util.inspect.custom\\")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => \\"URL \\" + inspect(v.href, options), + } + : v); + + if (_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length == 1) { + proxy.url = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url[0]; + } + + if (_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length > 1 + || !(\\"url\\" in proxy) + && _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length > 0) { + proxy.urls = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + } + return proxy; } } // deno-lint-ignore no-explicit-any -(QuoteRequest.prototype as any)[Symbol.for(\\"Deno.customInspect\\")] = +(Translation.prototype as any)[Symbol.for(\\"Deno.customInspect\\")] = function ( - this: QuoteRequest, + this: Translation, inspect: typeof Deno.inspect, options: Deno.InspectOptions, ): string { const proxy = this._getCustomInspectProxy(); - return \\"QuoteRequest \\" + inspect(proxy, options); + return \\"Translation \\" + inspect(proxy, options); }; // deno-lint-ignore no-explicit-any -(QuoteRequest.prototype as any)[Symbol.for(\\"nodejs.util.inspect.custom\\")] = +(Translation.prototype as any)[Symbol.for(\\"nodejs.util.inspect.custom\\")] = function ( - this: QuoteRequest, + this: Translation, _depth: number, options: unknown, inspect: (value: unknown, options: unknown) => string, ): string { const proxy = this._getCustomInspectProxy(); - return \\"QuoteRequest \\" + inspect(proxy, options); + return \\"Translation \\" + inspect(proxy, options); }; /** Proves that an actor consented to being included in a * {@link FeaturedCollection}. @@ -28454,7 +30624,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -28516,7 +30686,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -29164,13 +31334,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -29550,7 +31734,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -29592,7 +31776,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -29671,13 +31855,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -29970,7 +32168,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -30181,7 +32379,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} = {}, options: { @@ -33725,13 +35923,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -34793,7 +37005,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} , options: { documentLoader?: DocumentLoader, @@ -34848,7 +37060,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} = {}, options: { @@ -35238,13 +37450,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -35574,7 +37800,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} , options: { documentLoader?: DocumentLoader, @@ -35636,7 +37862,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} = {}, options: { @@ -35859,13 +38085,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"discoverable\\":\\"toot:discoverable\\",\\"Hashtag\\":\\"as:Hashtag\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -36226,7 +38466,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -36288,7 +38528,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} = {}, options: { @@ -36938,13 +39178,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -37589,13 +39843,27 @@ get endpoints(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/did/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -37985,13 +40253,27 @@ endpoints?: (URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/did/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -38897,13 +41179,27 @@ cryptosuite?: \\"eddsa-jcs-2022\\" | null;verificationMethod?: Multikey | URL | }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://w3id.org/security/data-integrity/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -40005,13 +42301,27 @@ owner?: Application | Group | Organization | Person | Service | URL | null;publi }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://w3id.org/security/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -40990,13 +43300,27 @@ controller?: Application | Group | Organization | Person | Service | URL | null; }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://w3id.org/security/multikey/v1\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -41388,7 +43712,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} , options: { documentLoader?: DocumentLoader, @@ -41450,7 +43774,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} = {}, options: { @@ -41678,13 +44002,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"},\\"Agreement\\":\\"vf:Agreement\\",\\"Commitment\\":\\"vf:Commitment\\",\\"stipulates\\":\\"vf:stipulates\\",\\"stipulatesReciprocal\\":\\"vf:stipulatesReciprocal\\",\\"satisfies\\":{\\"@id\\":\\"vf:satisfies\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -42368,13 +44706,27 @@ satisfies?: URL | null;resourceQuantity?: Measure | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"Commitment\\":\\"vf:Commitment\\",\\"satisfies\\":{\\"@id\\":\\"vf:satisfies\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -43287,13 +45639,27 @@ action?: string | null;resourceConformsTo?: URL | null;resourceQuantity?: Measur }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"Intent\\":\\"vf:Intent\\",\\"action\\":\\"vf:action\\",\\"resourceConformsTo\\":{\\"@id\\":\\"vf:resourceConformsTo\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"availableQuantity\\":\\"vf:availableQuantity\\",\\"minimumQuantity\\":\\"vf:minimumQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -43814,7 +46180,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} , options: { documentLoader?: DocumentLoader, @@ -43902,7 +46268,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} = {}, options: { @@ -44255,13 +46621,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"vf\\":\\"https://w3id.org/valueflows/ont/vf#\\",\\"om2\\":\\"http://www.ontology-of-units-of-measure.org/resource/om-2/\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"},\\"Proposal\\":\\"vf:Proposal\\",\\"Intent\\":\\"vf:Intent\\",\\"purpose\\":\\"vf:purpose\\",\\"unitBased\\":\\"vf:unitBased\\",\\"publishes\\":\\"vf:publishes\\",\\"reciprocal\\":\\"vf:reciprocal\\",\\"action\\":\\"vf:action\\",\\"resourceConformsTo\\":{\\"@id\\":\\"vf:resourceConformsTo\\",\\"@type\\":\\"@id\\"},\\"resourceQuantity\\":\\"vf:resourceQuantity\\",\\"availableQuantity\\":\\"vf:availableQuantity\\",\\"minimumQuantity\\":\\"vf:minimumQuantity\\",\\"hasUnit\\":\\"om2:hasUnit\\",\\"hasNumericalValue\\":\\"om2:hasNumericalValue\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -44717,7 +47097,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -44759,7 +47139,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -44838,13 +47218,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45103,7 +47497,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45145,7 +47539,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45224,13 +47618,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45484,7 +47892,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45526,7 +47934,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45605,13 +48013,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45914,7 +48336,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -46428,7 +48850,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -51899,13 +54321,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -53604,7 +56040,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -53646,7 +56082,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -53725,13 +56161,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -53997,7 +56447,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -54039,7 +56489,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -54118,13 +56568,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -54382,7 +56846,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -54457,7 +56921,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -55196,13 +57660,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -55635,7 +58113,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -55710,7 +58188,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -56000,13 +58478,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -56420,7 +58912,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -56456,7 +58948,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -56546,13 +59038,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -56805,7 +59311,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -56847,7 +59353,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -56926,13 +59432,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -57191,7 +59711,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -57233,7 +59753,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -57312,13 +59832,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -57581,7 +60115,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -57656,7 +60190,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} = {}, options: { @@ -58586,13 +61120,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59030,7 +61578,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59072,7 +61620,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59151,13 +61699,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59410,7 +61972,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59452,7 +62014,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59531,13 +62093,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59788,7 +62364,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59830,7 +62406,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59909,13 +62485,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -60894,13 +63484,27 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/activitystreams\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -61494,7 +64098,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -61530,7 +64134,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -61620,13 +64224,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -61880,7 +64498,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -61922,7 +64540,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62001,13 +64619,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -62262,7 +64894,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62304,7 +64936,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62383,13 +65015,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -62692,7 +65338,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -63206,7 +65852,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -68677,13 +71323,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -71628,13 +74288,27 @@ get names(): ((string | LanguageString))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -72477,13 +75151,27 @@ names?: ((string | LanguageString))[];language?: Intl.Locale | null;height?: num }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",{\\"Hashtag\\":\\"as:Hashtag\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -72723,7 +75411,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -72759,7 +75447,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -72849,13 +75537,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73109,7 +75811,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73151,7 +75853,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73230,13 +75932,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73493,7 +76209,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73535,7 +76251,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73614,13 +76330,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73873,7 +76603,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73915,7 +76645,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73994,13 +76724,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -74253,7 +76997,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74295,7 +77039,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74374,13 +77118,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -74633,7 +77391,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74675,7 +77433,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74754,13 +77512,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75011,7 +77783,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75053,7 +77825,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75132,13 +77904,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75487,13 +78273,27 @@ names?: ((string | LanguageString))[];language?: Intl.Locale | null;height?: num }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/activitystreams\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75736,7 +78536,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75778,7 +78578,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75857,13 +78657,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -76123,7 +78937,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -76198,7 +79012,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -76937,13 +79751,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -77380,7 +80208,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} , options: { documentLoader?: DocumentLoader, @@ -77448,7 +80276,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} = {}, options: { @@ -77905,13 +80733,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":\\"toot:votersCount\\",\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -78333,7 +81175,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -78847,7 +81689,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -84318,13 +87160,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -86020,7 +88876,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -86056,7 +88912,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -86146,13 +89002,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -86455,7 +89325,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -86969,7 +89839,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -92440,13 +95310,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -94151,7 +97035,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -94265,7 +97149,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: \\"cm\\" | \\"feet\\" | \\"inches\\" | \\"km\\" | \\"m\\" | \\"miles\\" | URL | null;} = {}, options: { @@ -94754,13 +97638,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -95316,7 +98214,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;describes?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];describes?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -95365,7 +98263,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;describes?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];describes?: Object | URL | null;} = {}, options: { @@ -95736,13 +98634,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -96077,7 +98989,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -96222,7 +99134,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -97528,13 +100440,27 @@ instruments?: (Object | URL)[];exclusiveOptions?: (Object | URL)[];inclusiveOpti }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\",{\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"sensitive\\":\\"as:sensitive\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98199,7 +101125,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98241,7 +101167,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98320,13 +101246,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98579,7 +101519,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98621,7 +101561,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98700,13 +101640,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98977,7 +101931,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;subject?: Object | URL | null;object?: Object | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];subject?: Object | URL | null;object?: Object | URL | null; objects?: (Object | URL)[];relationship?: Object | URL | null; relationships?: (Object | URL)[];} , @@ -99108,7 +102062,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;subject?: Object | URL | null;object?: Object | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];subject?: Object | URL | null;object?: Object | URL | null; objects?: (Object | URL)[];relationship?: Object | URL | null; relationships?: (Object | URL)[];} @@ -100317,13 +103271,27 @@ relationships?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -100771,7 +103739,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -100813,7 +103781,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -100892,13 +103860,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -101201,7 +104183,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -101715,7 +104697,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -107186,13 +110168,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/fep/ef61\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",\\"https://w3id.org/fep/7aa9\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"featuredCollections\\":{\\"@id\\":\\"https://w3id.org/fep/7aa9#featuredCollections\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"Emoji\\":\\"toot:Emoji\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -109261,13 +112257,27 @@ get contents(): ((string | LanguageString))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? \\"https://www.w3.org/ns/activitystreams\\"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -109633,7 +112643,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -109675,7 +112685,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -109754,13 +112764,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -110013,7 +113037,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -110055,7 +113079,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -110134,13 +113158,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -110396,7 +113434,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;formerType?: $EntityType | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];formerType?: $EntityType | null; formerTypes?: ($EntityType)[];deleted?: Temporal.Instant | null;} , options: { @@ -110482,7 +113520,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;formerType?: $EntityType | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];formerType?: $EntityType | null; formerTypes?: ($EntityType)[];deleted?: Temporal.Instant | null;} = {}, @@ -110735,13 +113773,27 @@ get formerTypes(): ($EntityType)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111122,7 +114174,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111164,7 +114216,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111243,13 +114295,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111507,7 +114573,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111549,7 +114615,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111628,13 +114694,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",{\\"litepub\\":\\"http://litepub.social/ns#\\",\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"EmojiReact\\":\\"litepub:EmojiReact\\",\\"Emoji\\":\\"toot:Emoji\\"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111890,7 +114970,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111932,7 +115012,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112011,13 +115091,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/v1\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://www.w3.org/ns/did/v1\\",\\"https://w3id.org/security/multikey/v1\\",\\"https://gotosocial.org/ns\\",{\\"alsoKnownAs\\":{\\"@id\\":\\"as:alsoKnownAs\\",\\"@type\\":\\"@id\\"},\\"manuallyApprovesFollowers\\":\\"as:manuallyApprovesFollowers\\",\\"sensitive\\":\\"as:sensitive\\",\\"movedTo\\":{\\"@id\\":\\"as:movedTo\\",\\"@type\\":\\"@id\\"},\\"quoteUrl\\":\\"as:quoteUrl\\",\\"toot\\":\\"http://joinmastodon.org/ns#\\",\\"featured\\":{\\"@id\\":\\"toot:featured\\",\\"@type\\":\\"@id\\"},\\"featuredTags\\":{\\"@id\\":\\"toot:featuredTags\\",\\"@type\\":\\"@id\\"},\\"discoverable\\":\\"toot:discoverable\\",\\"suspended\\":\\"toot:suspended\\",\\"memorial\\":\\"toot:memorial\\",\\"indexable\\":\\"toot:indexable\\",\\"votersCount\\":{\\"@id\\":\\"toot:votersCount\\",\\"@type\\":\\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\\"},\\"Emoji\\":\\"toot:Emoji\\",\\"Hashtag\\":\\"as:Hashtag\\",\\"schema\\":\\"http://schema.org#\\",\\"PropertyValue\\":\\"schema:PropertyValue\\",\\"value\\":\\"schema:value\\",\\"ChatMessage\\":\\"http://litepub.social/ns#ChatMessage\\",\\"quote\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quote\\",\\"@type\\":\\"@id\\"},\\"fedibird\\":\\"http://fedibird.com/ns#\\",\\"quoteUri\\":\\"fedibird:quoteUri\\",\\"QuoteAuthorization\\":\\"https://w3id.org/fep/044f#QuoteAuthorization\\",\\"QuoteRequest\\":\\"https://w3id.org/fep/044f#QuoteRequest\\",\\"quoteAuthorization\\":{\\"@id\\":\\"https://w3id.org/fep/044f#quoteAuthorization\\",\\"@type\\":\\"@id\\"},\\"misskey\\":\\"https://misskey-hub.net/ns#\\",\\"_misskey_quote\\":\\"misskey:_misskey_quote\\",\\"_misskey_followedMessage\\":\\"misskey:_misskey_followedMessage\\",\\"isCat\\":\\"misskey:isCat\\",\\"emojiReactions\\":{\\"@id\\":\\"fedibird:emojiReactions\\",\\"@type\\":\\"@id\\"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -112268,7 +115362,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -112304,7 +115398,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -112394,13 +115488,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v2\\",{\\"digestMultibase\\":\\"https://www.w3.org/ns/credentials/v2#digestMultibase\\"},\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -112652,7 +115760,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112694,7 +115802,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112773,13 +115881,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? [\\"https://w3id.org/identity/v1\\",\\"https://www.w3.org/ns/activitystreams\\",\\"https://w3id.org/security/data-integrity/v1\\",\\"https://gotosocial.org/ns\\"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context diff --git a/packages/vocab-tools/src/__snapshots__/class.test.ts.snap b/packages/vocab-tools/src/__snapshots__/class.test.ts.snap index 5e17ac9c9..4f00dc000 100644 --- a/packages/vocab-tools/src/__snapshots__/class.test.ts.snap +++ b/packages/vocab-tools/src/__snapshots__/class.test.ts.snap @@ -48,9 +48,34 @@ function isValidLanguageTag(language: string): boolean { } } +const extraPropertyContexts: Readonly> = + {"https://schema.org/translator":"https://w3id.org/fep/22cd","https://w3id.org/fep/22cd#translations":"https://w3id.org/fep/22cd"}; + +function getExtraContexts(document: unknown): string[] { + const contexts = new Set(); + const pending: unknown[] = [document]; + while (pending.length > 0) { + const value = pending.pop(); + if (value == null || typeof value !== "object") continue; + if (Array.isArray(value)) { + for (const item of value) pending.push(item); + continue; + } + if ("@value" in value) continue; + for (const [key, child] of globalThis.Object.entries(value)) { + if (key === "@context") continue; + if (globalThis.Object.hasOwn(extraPropertyContexts, key)) { + contexts.add(extraPropertyContexts[key]); + } + pending.push(child); + } + } + return [...contexts]; +} + const PORTABLE_IRI_PATTERN = /^ap(?:\\+ef61)?:\\/\\//i; -const PORTABLE_IRI_KEYS: ReadonlySet = new Set(["@id","_misskey_quote","actor","alsoKnownAs","announceAuthorization","anyOf","approvedBy","assertionMethod","attachment","attributedTo","audience","automaticApproval","bcc","bto","cc","context","controller","current","describes","emojiReactions","featureAuthorization","featured","featuredCollections","featuredObject","featuredTags","first","followers","followersOf","following","followingOf","generator","href","http://fedibird.com/ns#emojiReactions","http://fedibird.com/ns#quoteUri","http://joinmastodon.org/ns#featured","http://joinmastodon.org/ns#featuredTags","http://www.w3.org/ns/ldp#inbox","https://gotosocial.org/ns#announceAuthorization","https://gotosocial.org/ns#approvedBy","https://gotosocial.org/ns#automaticApproval","https://gotosocial.org/ns#interactingObject","https://gotosocial.org/ns#interactionTarget","https://gotosocial.org/ns#likeAuthorization","https://gotosocial.org/ns#manualApproval","https://gotosocial.org/ns#replyAuthorization","https://misskey-hub.net/ns#_misskey_quote","https://w3id.org/fep/044f#quote","https://w3id.org/fep/044f#quoteAuthorization","https://w3id.org/fep/5711#followersOf","https://w3id.org/fep/5711#followingOf","https://w3id.org/fep/5711#inboxOf","https://w3id.org/fep/5711#likedOf","https://w3id.org/fep/5711#likesOf","https://w3id.org/fep/5711#outboxOf","https://w3id.org/fep/5711#repliesOf","https://w3id.org/fep/5711#sharesOf","https://w3id.org/fep/7aa9#featureAuthorization","https://w3id.org/fep/7aa9#featuredCollections","https://w3id.org/fep/7aa9#featuredObject","https://w3id.org/security#assertionMethod","https://w3id.org/security#controller","https://w3id.org/security#owner","https://w3id.org/security#proof","https://w3id.org/security#publicKey","https://w3id.org/security#verificationMethod","https://w3id.org/valueflows/ont/vf#resourceConformsTo","https://w3id.org/valueflows/ont/vf#satisfies","https://www.w3.org/ns/activitystreams#actor","https://www.w3.org/ns/activitystreams#alsoKnownAs","https://www.w3.org/ns/activitystreams#anyOf","https://www.w3.org/ns/activitystreams#attachment","https://www.w3.org/ns/activitystreams#attributedTo","https://www.w3.org/ns/activitystreams#audience","https://www.w3.org/ns/activitystreams#bcc","https://www.w3.org/ns/activitystreams#bto","https://www.w3.org/ns/activitystreams#cc","https://www.w3.org/ns/activitystreams#context","https://www.w3.org/ns/activitystreams#current","https://www.w3.org/ns/activitystreams#describes","https://www.w3.org/ns/activitystreams#first","https://www.w3.org/ns/activitystreams#followers","https://www.w3.org/ns/activitystreams#following","https://www.w3.org/ns/activitystreams#generator","https://www.w3.org/ns/activitystreams#href","https://www.w3.org/ns/activitystreams#icon","https://www.w3.org/ns/activitystreams#image","https://www.w3.org/ns/activitystreams#inReplyTo","https://www.w3.org/ns/activitystreams#instrument","https://www.w3.org/ns/activitystreams#items","https://www.w3.org/ns/activitystreams#last","https://www.w3.org/ns/activitystreams#liked","https://www.w3.org/ns/activitystreams#likes","https://www.w3.org/ns/activitystreams#location","https://www.w3.org/ns/activitystreams#movedTo","https://www.w3.org/ns/activitystreams#next","https://www.w3.org/ns/activitystreams#oauthAuthorizationEndpoint","https://www.w3.org/ns/activitystreams#oauthTokenEndpoint","https://www.w3.org/ns/activitystreams#object","https://www.w3.org/ns/activitystreams#oneOf","https://www.w3.org/ns/activitystreams#origin","https://www.w3.org/ns/activitystreams#outbox","https://www.w3.org/ns/activitystreams#partOf","https://www.w3.org/ns/activitystreams#prev","https://www.w3.org/ns/activitystreams#preview","https://www.w3.org/ns/activitystreams#provideClientKey","https://www.w3.org/ns/activitystreams#proxyUrl","https://www.w3.org/ns/activitystreams#quoteUrl","https://www.w3.org/ns/activitystreams#relationship","https://www.w3.org/ns/activitystreams#replies","https://www.w3.org/ns/activitystreams#result","https://www.w3.org/ns/activitystreams#sharedInbox","https://www.w3.org/ns/activitystreams#shares","https://www.w3.org/ns/activitystreams#signClientKey","https://www.w3.org/ns/activitystreams#streams","https://www.w3.org/ns/activitystreams#subject","https://www.w3.org/ns/activitystreams#tag","https://www.w3.org/ns/activitystreams#target","https://www.w3.org/ns/activitystreams#to","https://www.w3.org/ns/activitystreams#units","https://www.w3.org/ns/activitystreams#uploadMedia","https://www.w3.org/ns/activitystreams#url","https://www.w3.org/ns/did#service","https://www.w3.org/ns/did#serviceEndpoint","icon","id","image","inReplyTo","inbox","inboxOf","instrument","interactingObject","interactionTarget","items","last","likeAuthorization","liked","likedOf","likes","likesOf","location","manualApproval","movedTo","next","oauthAuthorizationEndpoint","oauthTokenEndpoint","object","oneOf","orderedItems","origin","outbox","outboxOf","owner","partOf","prev","preview","proof","provideClientKey","proxyUrl","publicKey","quote","quoteAuthorization","quoteUri","quoteUrl","relationship","replies","repliesOf","replyAuthorization","resourceConformsTo","result","satisfies","service","sharedInbox","shares","sharesOf","signClientKey","streams","subject","tag","target","to","units","uploadMedia","url"]); +const PORTABLE_IRI_KEYS: ReadonlySet = new Set(["@id","_misskey_quote","actor","alsoKnownAs","announceAuthorization","anyOf","approvedBy","assertionMethod","attachment","attributedTo","audience","automaticApproval","bcc","bto","cc","context","controller","current","describes","emojiReactions","featureAuthorization","featured","featuredCollections","featuredObject","featuredTags","first","followers","followersOf","following","followingOf","generator","href","http://fedibird.com/ns#emojiReactions","http://fedibird.com/ns#quoteUri","http://joinmastodon.org/ns#featured","http://joinmastodon.org/ns#featuredTags","http://www.w3.org/ns/ldp#inbox","https://gotosocial.org/ns#announceAuthorization","https://gotosocial.org/ns#approvedBy","https://gotosocial.org/ns#automaticApproval","https://gotosocial.org/ns#interactingObject","https://gotosocial.org/ns#interactionTarget","https://gotosocial.org/ns#likeAuthorization","https://gotosocial.org/ns#manualApproval","https://gotosocial.org/ns#replyAuthorization","https://misskey-hub.net/ns#_misskey_quote","https://schema.org/isBasedOn","https://schema.org/translationOfWork","https://schema.org/translator","https://w3id.org/fep/044f#quote","https://w3id.org/fep/044f#quoteAuthorization","https://w3id.org/fep/5711#followersOf","https://w3id.org/fep/5711#followingOf","https://w3id.org/fep/5711#inboxOf","https://w3id.org/fep/5711#likedOf","https://w3id.org/fep/5711#likesOf","https://w3id.org/fep/5711#outboxOf","https://w3id.org/fep/5711#repliesOf","https://w3id.org/fep/5711#sharesOf","https://w3id.org/fep/7aa9#featureAuthorization","https://w3id.org/fep/7aa9#featuredCollections","https://w3id.org/fep/7aa9#featuredObject","https://w3id.org/security#assertionMethod","https://w3id.org/security#controller","https://w3id.org/security#owner","https://w3id.org/security#proof","https://w3id.org/security#publicKey","https://w3id.org/security#verificationMethod","https://w3id.org/valueflows/ont/vf#resourceConformsTo","https://w3id.org/valueflows/ont/vf#satisfies","https://www.w3.org/ns/activitystreams#actor","https://www.w3.org/ns/activitystreams#alsoKnownAs","https://www.w3.org/ns/activitystreams#anyOf","https://www.w3.org/ns/activitystreams#attachment","https://www.w3.org/ns/activitystreams#attributedTo","https://www.w3.org/ns/activitystreams#audience","https://www.w3.org/ns/activitystreams#bcc","https://www.w3.org/ns/activitystreams#bto","https://www.w3.org/ns/activitystreams#cc","https://www.w3.org/ns/activitystreams#context","https://www.w3.org/ns/activitystreams#current","https://www.w3.org/ns/activitystreams#describes","https://www.w3.org/ns/activitystreams#first","https://www.w3.org/ns/activitystreams#followers","https://www.w3.org/ns/activitystreams#following","https://www.w3.org/ns/activitystreams#generator","https://www.w3.org/ns/activitystreams#href","https://www.w3.org/ns/activitystreams#icon","https://www.w3.org/ns/activitystreams#image","https://www.w3.org/ns/activitystreams#inReplyTo","https://www.w3.org/ns/activitystreams#instrument","https://www.w3.org/ns/activitystreams#items","https://www.w3.org/ns/activitystreams#last","https://www.w3.org/ns/activitystreams#liked","https://www.w3.org/ns/activitystreams#likes","https://www.w3.org/ns/activitystreams#location","https://www.w3.org/ns/activitystreams#movedTo","https://www.w3.org/ns/activitystreams#next","https://www.w3.org/ns/activitystreams#oauthAuthorizationEndpoint","https://www.w3.org/ns/activitystreams#oauthTokenEndpoint","https://www.w3.org/ns/activitystreams#object","https://www.w3.org/ns/activitystreams#oneOf","https://www.w3.org/ns/activitystreams#origin","https://www.w3.org/ns/activitystreams#outbox","https://www.w3.org/ns/activitystreams#partOf","https://www.w3.org/ns/activitystreams#prev","https://www.w3.org/ns/activitystreams#preview","https://www.w3.org/ns/activitystreams#provideClientKey","https://www.w3.org/ns/activitystreams#proxyUrl","https://www.w3.org/ns/activitystreams#quoteUrl","https://www.w3.org/ns/activitystreams#relationship","https://www.w3.org/ns/activitystreams#replies","https://www.w3.org/ns/activitystreams#result","https://www.w3.org/ns/activitystreams#sharedInbox","https://www.w3.org/ns/activitystreams#shares","https://www.w3.org/ns/activitystreams#signClientKey","https://www.w3.org/ns/activitystreams#streams","https://www.w3.org/ns/activitystreams#subject","https://www.w3.org/ns/activitystreams#tag","https://www.w3.org/ns/activitystreams#target","https://www.w3.org/ns/activitystreams#to","https://www.w3.org/ns/activitystreams#units","https://www.w3.org/ns/activitystreams#uploadMedia","https://www.w3.org/ns/activitystreams#url","https://www.w3.org/ns/did#service","https://www.w3.org/ns/did#serviceEndpoint","icon","id","image","inReplyTo","inbox","inboxOf","instrument","interactingObject","interactionTarget","isBasedOn","items","last","likeAuthorization","liked","likedOf","likes","likesOf","location","manualApproval","movedTo","next","oauthAuthorizationEndpoint","oauthTokenEndpoint","object","oneOf","orderedItems","origin","outbox","outboxOf","owner","partOf","prev","preview","proof","provideClientKey","proxyUrl","publicKey","quote","quoteAuthorization","quoteUri","quoteUrl","relationship","replies","repliesOf","replyAuthorization","resourceConformsTo","result","satisfies","service","sharedInbox","shares","sharesOf","signClientKey","streams","subject","tag","target","to","translationOfWork","translator","units","uploadMedia","url"]); import * as _ppM0 from "./preprocessors.ts"; @@ -211,7 +236,8 @@ export class Object { #_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization: (AnnounceAuthorization | URL)[] = []; #_trust_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization: Set = new Set(); - + #_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations: (Translation)[] = []; + /** * Constructs a new instance of Object with the given values. * @param values The values to initialize the instance with. @@ -237,7 +263,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -1184,6 +1210,21 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu ); } } + + if ("translations" in values && values.translations != null) { + + if (Array.isArray(values.translations) && + values.translations.every(v => v instanceof Translation)) { + // @ts-ignore: type is checked above. + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = values.translations; + + } else { + throw new TypeError( + "The translations must be an array of type " + + "Translation" + ".", + ); + } + } } /** @@ -1212,7 +1253,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -2171,6 +2212,21 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu ); } } + clone.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + if ("translations" in values && values.translations != null) { + + if (Array.isArray(values.translations) && + values.translations.every(v => v instanceof Translation)) { + // @ts-ignore: type is checked above. + clone.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = values.translations; + + } else { + throw new TypeError( + "The translations must be an array of type " + + "Translation" + ".", + ); + } + } return clone; } @@ -9155,6 +9211,18 @@ get urls(): ((URL | Link))[] { return v; } +/** Translation metadata for the language versions in this object's content, + * name, or summary maps, as defined by the draft + * [FEP-22cd](https://w3id.org/fep/22cd). Each entry describes one translated + * language; directly authored languages have no entry. The entries share + * this object's identity, replies, and reactions. Translator credit grants + * no authority to update the object. + * + */ +get translations(): (Translation)[] { + return this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + } + /** * Converts this object to a JSON-LD structure. * @param options The options to use. @@ -9942,6 +10010,26 @@ get urls(): ((URL | Link))[] { } + compactItems = []; + for (const v of this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations) { + const item = ( + await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result["translations"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + result["type"] = "Object"; if (this.id != null) result["id"] = formatIri(this.id); result["@context"] = ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; @@ -10715,6 +10803,26 @@ get urls(): ((URL | Link))[] { } + array = []; + for (const v of this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations) { + let element = ( + await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === "undefined") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values["https://w3id.org/fep/22cd#translations"] = propValue; + + } + values["@type"] = ["https://www.w3.org/ns/activitystreams#Object"]; if (this.id != null) values["@id"] = formatIri(this.id); if (options.format === "expand") { @@ -10726,13 +10834,27 @@ get urls(): ((URL | Link))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -10778,6 +10900,11 @@ get urls(): ((URL | Link))[] { this.#_2MHQfh2N74MMmDLDqYWFo7TxYQK2_interactionPolicy.length > 0 ) return false; + if ( + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations != null && + this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 0 + ) return false; + return true; } @@ -12690,6 +12817,38 @@ get urls(): ((URL | Link))[] { } instance.#_446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization = _446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization; + const _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations: (Translation)[] = []; + + let _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array = values["https://w3id.org/fep/22cd#translations"]; + + for ( + const v of _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array == null + ? [] + : _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array.length === 1 && "@list" in _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array[0] + ? _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array[0]["@list"] + : _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations__array + ) { + if (v == null) continue; + + const decoded = + await Translation.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) + ; + + if (typeof decoded === "undefined") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.push(decoded); + + } + instance.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; instance._shouldCacheJsonLd = shouldCacheJsonLd; if ( @@ -13581,6 +13740,28 @@ get urls(): ((URL | Link))[] { proxy.announceAuthorization = _446xEaDBs3Fz6MyzP3PSBaLupkbJ_announceAuthorization[0]; } + const _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations = this.#_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(v.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(v.href, options), + } + : v); + + if (_a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 1 + || !("translation" in proxy) + && _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations.length > 0) { + proxy.translations = _a1jKLXa1P1ZoKTfTM2CzmhHK3cP_translations; + } + return proxy; } } @@ -13644,7 +13825,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -13680,7 +13861,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -13770,13 +13951,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams",{"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -14039,7 +14234,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -14114,7 +14309,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -14853,13 +15048,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","Emoji":"toot:Emoji","ChatMessage":"http://litepub.social/ns#ChatMessage","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -15312,7 +15521,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -15594,7 +15803,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -18109,13 +18318,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -18926,7 +19149,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -18968,7 +19191,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -19047,13 +19270,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"litepub":"http://litepub.social/ns#","toot":"http://joinmastodon.org/ns#","EmojiReact":"litepub:EmojiReact","Emoji":"toot:Emoji"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -19629,13 +19866,27 @@ name?: string | LanguageString | null;value?: string | LanguageString | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams",{"schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -20322,13 +20573,27 @@ unit?: string | null;numericalValue?: Decimal | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams",{"om2":"http://www.ontology-of-units-of-measure.org/resource/om-2/","hasUnit":"om2:hasUnit","hasNumericalValue":"om2:hasNumericalValue"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -20692,7 +20957,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -20754,7 +21019,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -21405,13 +21670,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -21795,7 +22074,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -21837,7 +22116,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -21916,13 +22195,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -22650,13 +22943,27 @@ canFeature?: InteractionRule | null;canLike?: InteractionRule | null;canReply?: }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://gotosocial.org/ns","https://w3id.org/fep/7aa9"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -23598,13 +23905,27 @@ get manualApprovals(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://gotosocial.org/ns"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -23979,7 +24300,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -24041,7 +24362,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -24692,13 +25013,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -25081,7 +25416,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -25123,7 +25458,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -25202,13 +25537,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -25473,7 +25822,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -25535,7 +25884,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -26186,13 +26535,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -26575,7 +26938,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -26617,7 +26980,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -26696,13 +27059,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -26967,7 +27344,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -27029,7 +27406,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -27679,13 +28056,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -28068,7 +28459,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -28110,7 +28501,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -28189,13 +28580,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","votersCount":{"@id":"toot:votersCount","@type":"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"},"Emoji":"toot:Emoji","Hashtag":"as:Hashtag","ChatMessage":"http://litepub.social/ns#ChatMessage","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -28381,34 +28786,1799 @@ instruments?: (Object | URL)[];} return instance; } - protected override _getCustomInspectProxy(): Record { - const proxy: Record = super._getCustomInspectProxy(); + protected override _getCustomInspectProxy(): Record { + const proxy: Record = super._getCustomInspectProxy(); + return proxy; + } + } + + +// deno-lint-ignore no-explicit-any +(QuoteRequest.prototype as any)[Symbol.for("Deno.customInspect")] = + function ( + this: QuoteRequest, + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string { + const proxy = this._getCustomInspectProxy(); + return "QuoteRequest " + inspect(proxy, options); + }; + +// deno-lint-ignore no-explicit-any +(QuoteRequest.prototype as any)[Symbol.for("nodejs.util.inspect.custom")] = + function ( + this: QuoteRequest, + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string { + const proxy = this._getCustomInspectProxy(); + return "QuoteRequest " + inspect(proxy, options); + }; + /** Translator credit and source freshness for one language version of an + * {@link Object}, as defined by the draft + * [FEP-22cd](https://w3id.org/fep/22cd). This is embedded metadata, not an + * independent post or activity target. Its optional identifier need not be + * dereferenceable and does not establish trust in embedded translator actors. + * + * Targets [draft revision 6d0d6559](https://codeberg.org/fediverse/fep/src/commit/6d0d6559054baeb7b71a5f2bdc14fc4c09b66f39/fep/22cd/fep-22cd.md). + * + */ +export class Translation { + + readonly #documentLoader?: DocumentLoader; + readonly #contextLoader?: DocumentLoader; + readonly #tracerProvider?: TracerProvider; + readonly #warning?: { + category: string[]; + message: string; + values?: Record; + }; + #cachedJsonLd?: unknown; + readonly #_baseUrl?: URL; + #shouldCacheJsonLd = true; + readonly id: URL | null; + + protected get _documentLoader(): DocumentLoader | undefined { + return this.#documentLoader; + } + + protected get _contextLoader(): DocumentLoader | undefined { + return this.#contextLoader; + } + + protected get _tracerProvider(): TracerProvider | undefined { + return this.#tracerProvider; + } + + protected get _warning(): { + category: string[]; + message: string; + values?: Record; + } | undefined { + return this.#warning; + } + + protected get _cachedJsonLd(): unknown | undefined { + return this.#cachedJsonLd; + } + + protected set _cachedJsonLd(value: unknown | undefined) { + this.#cachedJsonLd = value; + } + + protected get _baseUrl(): URL | undefined { + return this.#_baseUrl; + } + + protected get _shouldCacheJsonLd(): boolean { + return this.#shouldCacheJsonLd; + } + + protected set _shouldCacheJsonLd(value: boolean) { + this.#shouldCacheJsonLd = value; + } + + protected static _shouldCacheDecodedJsonLd(value: unknown): boolean { + if (value == null || typeof value !== "object") return true; + if (!("_shouldCacheJsonLd" in value)) return true; + return (value as { _shouldCacheJsonLd: boolean })._shouldCacheJsonLd; + } + + /** + * The type URI of {@link Translation}: \`https://w3id.org/fep/22cd#Translation\`. + */ + static get typeId(): URL { + return new URL("https://w3id.org/fep/22cd#Translation"); + } + #_diXuPmFWiEqfLPhhrxg6Xc7ixZG: (Intl.Locale)[] = []; + + #_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: (Application | Group | Organization | Person | Service | URL)[] = []; + #_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: Set = new Set(); + #_Msz9PwRg7cWkiXPL4ixyQLtuuH7: (URL)[] = []; +#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated: (Temporal.Instant)[] = []; +#_4KvkQNz1JjGs8S7iJDcGrUYETbUW: (URL)[] = []; +#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url: ((URL | Link))[] = []; + + /** + * Constructs a new instance of Translation with the given values. + * @param values The values to initialize the instance with. + * @param options The options to use for initialization. + */ + constructor( + values: + { +id?: URL | null; +language?: Intl.Locale | null;translator?: Application | Group | Organization | Person | Service | URL | null; +translators?: (Application | Group | Organization | Person | Service | URL)[];original?: URL | null;sourceUpdated?: Temporal.Instant | null;basis?: URL | null;url?: URL | Link | null; +urls?: ((URL | Link))[];} +, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + } = {}, + ) { + + this.#documentLoader = options.documentLoader; + this.#contextLoader = options.contextLoader; + this.#tracerProvider = options.tracerProvider; + const baseUrl = (options as { baseUrl?: URL }).baseUrl; + this.#_baseUrl = baseUrl == null ? undefined : new URL(baseUrl.href); + if ("$warning" in options) { + this.#warning = options.$warning as unknown as { + category: string[]; + message: string; + values?: Record; + }; + } + if (values.id == null || values.id instanceof URL) { + this.id = values.id ?? null; + } else { + throw new TypeError("The id must be a URL."); + } + + if ("language" in values && values.language != null) { + if (values.language instanceof Intl.Locale) { + // @ts-ignore: type is checked above. + this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = [values.language]; + + } else { + throw new TypeError( + "The language must be of type " + + "Intl.Locale" + ".", + ); + } + } + + if ("translator" in values && values.translator != null) { + if (values.translator instanceof Application || values.translator instanceof Group || values.translator instanceof Organization || values.translator instanceof Person || values.translator instanceof Service || values.translator instanceof URL) { + // @ts-ignore: type is checked above. + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = [values.translator]; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(0); + } else { + throw new TypeError( + "The translator must be of type " + + "Application | Group | Organization | Person | Service | URL" + ".", + ); + } + } + + if ("translators" in values && values.translators != null) { + + if ("translator" in values && + values.translator != null) { + throw new TypeError( + "Cannot initialize both translator and " + + "translators at the same time.", + ); + } + + if (Array.isArray(values.translators) && + values.translators.every(v => v instanceof Application || v instanceof Group || v instanceof Organization || v instanceof Person || v instanceof Service || v instanceof URL)) { + // @ts-ignore: type is checked above. + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = values.translators; + + for (let i = 0; i < values.translators.length; i++) { + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + } + + } else { + throw new TypeError( + "The translators must be an array of type " + + "Application | Group | Organization | Person | Service | URL" + ".", + ); + } + } + + if ("original" in values && values.original != null) { + if (values.original instanceof URL) { + // @ts-ignore: type is checked above. + this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = [values.original]; + + } else { + throw new TypeError( + "The original must be of type " + + "URL" + ".", + ); + } + } + + if ("sourceUpdated" in values && values.sourceUpdated != null) { + if (isTemporalInstant(values.sourceUpdated)) { + // @ts-ignore: type is checked above. + this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = [values.sourceUpdated]; + + } else { + throw new TypeError( + "The sourceUpdated must be of type " + + "Temporal.Instant" + ".", + ); + } + } + + if ("basis" in values && values.basis != null) { + if (values.basis instanceof URL) { + // @ts-ignore: type is checked above. + this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = [values.basis]; + + } else { + throw new TypeError( + "The basis must be of type " + + "URL" + ".", + ); + } + } + + if ("url" in values && values.url != null) { + if (values.url instanceof URL || values.url instanceof Link) { + // @ts-ignore: type is checked above. + this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = [values.url]; + + } else { + throw new TypeError( + "The url must be of type " + + "URL | Link" + ".", + ); + } + } + + if ("urls" in values && values.urls != null) { + + if ("url" in values && + values.url != null) { + throw new TypeError( + "Cannot initialize both url and " + + "urls at the same time.", + ); + } + + if (Array.isArray(values.urls) && + values.urls.every(v => v instanceof URL || v instanceof Link)) { + // @ts-ignore: type is checked above. + this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = values.urls; + + } else { + throw new TypeError( + "The urls must be an array of type " + + "URL | Link" + ".", + ); + } + } + } + + /** + * Clones this instance, optionally updating it with the given values. + * @param values The values to update the clone with. + * @param options The options to use for cloning. + * @returns The cloned instance. + */ + clone( + values: + { +id?: URL | null; +language?: Intl.Locale | null;translator?: Application | Group | Organization | Person | Service | URL | null; +translators?: (Application | Group | Organization | Person | Service | URL)[];original?: URL | null;sourceUpdated?: Temporal.Instant | null;basis?: URL | null;url?: URL | Link | null; +urls?: ((URL | Link))[];} + + = {}, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + } = {} + ): Translation { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + // @ts-ignore: $warning is not recognized as a property, but it is. + options = { ...options, $warning: this._warning }; + } + + // @ts-ignore: this.constructor is not recognized as a constructor, but it is. + const clone: Translation = new this.constructor( + { id: values.id ?? this.id }, + options + ); + clone.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG; + if ("language" in values && values.language != null) { + if (values.language instanceof Intl.Locale) { + // @ts-ignore: type is checked above. + clone.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = [values.language]; + + } else { + throw new TypeError( + "The language must be of type " + + "Intl.Locale" + ".", + ); + } + } + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR;clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set(this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR); + if ("translator" in values && values.translator != null) { + if (values.translator instanceof Application || values.translator instanceof Group || values.translator instanceof Organization || values.translator instanceof Person || values.translator instanceof Service || values.translator instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = [values.translator]; + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set([0]); + } else { + throw new TypeError( + "The translator must be of type " + + "Application | Group | Organization | Person | Service | URL" + ".", + ); + } + } + + if ("translators" in values && values.translators != null) { + + if ("translator" in values && + values.translator != null) { + throw new TypeError( + "Cannot update both translator and " + + "translators at the same time.", + ); + } + + if (Array.isArray(values.translators) && + values.translators.every(v => v instanceof Application || v instanceof Group || v instanceof Organization || v instanceof Person || v instanceof Service || v instanceof URL)) { + // @ts-ignore: type is checked above. + clone.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = values.translators; + + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = new Set(); + for (let i = 0; i < values.translators.length; i++) { + clone.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + } + + } else { + throw new TypeError( + "The translators must be an array of type " + + "Application | Group | Organization | Person | Service | URL" + ".", + ); + } + } + clone.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7; + if ("original" in values && values.original != null) { + if (values.original instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = [values.original]; + + } else { + throw new TypeError( + "The original must be of type " + + "URL" + ".", + ); + } + } + clone.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated; + if ("sourceUpdated" in values && values.sourceUpdated != null) { + if (isTemporalInstant(values.sourceUpdated)) { + // @ts-ignore: type is checked above. + clone.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = [values.sourceUpdated]; + + } else { + throw new TypeError( + "The sourceUpdated must be of type " + + "Temporal.Instant" + ".", + ); + } + } + clone.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW; + if ("basis" in values && values.basis != null) { + if (values.basis instanceof URL) { + // @ts-ignore: type is checked above. + clone.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = [values.basis]; + + } else { + throw new TypeError( + "The basis must be of type " + + "URL" + ".", + ); + } + } + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + if ("url" in values && values.url != null) { + if (values.url instanceof URL || values.url instanceof Link) { + // @ts-ignore: type is checked above. + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = [values.url]; + + } else { + throw new TypeError( + "The url must be of type " + + "URL | Link" + ".", + ); + } + } + + if ("urls" in values && values.urls != null) { + + if ("url" in values && + values.url != null) { + throw new TypeError( + "Cannot update both url and " + + "urls at the same time.", + ); + } + + if (Array.isArray(values.urls) && + values.urls.every(v => v instanceof URL || v instanceof Link)) { + // @ts-ignore: type is checked above. + clone.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = values.urls; + + } else { + throw new TypeError( + "The urls must be an array of type " + + "URL | Link" + ".", + ); + } + } + + return clone; + } + +/** The translated language. Publishers must match a language in the + * containing object's content, name, or summary map. + * + */ + get language(): (Intl.Locale | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG.length < 1) return null; + return this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG[0]; + } + + async #fetchTranslator( + url: URL, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: "ignore" | "throw" | "trust"; + } = {}, + ): Promise { + const documentLoader = + options.documentLoader ?? this._documentLoader ?? getDocumentLoader(); + const contextLoader = + options.contextLoader ?? this._contextLoader ?? getDocumentLoader(); + const tracerProvider = options.tracerProvider ?? + this._tracerProvider ?? trace.getTracerProvider(); + const tracer = tracerProvider.getTracer( + "@fedify/vocab-tools", + "0.0.0", + ); + return await tracer.startActiveSpan("activitypub.lookup_object", async (span) => { + const lookupUrl = formatIri(url); + let fetchResult: RemoteDocument; + try { + fetchResult = await documentLoader(lookupUrl); + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(error), + }); + span.end(); + if (options.suppressError) { + getLogger(["fedify", "vocab"]).error( + "Failed to fetch {url}: {error}", + { error, url: lookupUrl } + ); + return null; + } + throw error; + } + const { document, documentUrl } = fetchResult; + const baseUrl = parseIri(documentUrl); + try { + const obj = await this.#translator_fromJsonLd( + document, + { documentLoader, contextLoader, tracerProvider, baseUrl } + ); + if (obj?.id != null && !isTrustedIriOrigin(options, obj.id, baseUrl)) { + if (options.crossOrigin === "throw") { + throw new Error( + "The object's @id (" + obj.id.href + ") has a different origin " + + "than the document URL (" + baseUrl.href + "); refusing to return " + + "the object. If you want to bypass this check and are aware of" + + 'the security implications, set the crossOrigin option to "trust".' + ); + } + getLogger(["fedify", "vocab"]).warn( + "The object's @id ({objectId}) has a different origin than the document " + + "URL ({documentUrl}); refusing to return the object. If you want to " + + "bypass this check and are aware of the security implications, " + + 'set the crossOrigin option to "trust".', + { ...fetchResult, objectId: obj.id.href }, + ); + return null; + } + span.setAttribute("activitypub.object.id", (obj.id ?? url).href); + span.setAttribute( + "activitypub.object.type", + // @ts-ignore: obj.constructor always has a typeId. + obj.constructor.typeId.href + ); + return obj; + } catch (e) { + if (options.suppressError) { + getLogger(["fedify", "vocab"]).error( + "Failed to parse {url}: {error}", + { error: e, url: lookupUrl } + ); + return null; + } + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(e), + }); + throw e; + } finally { + span.end(); + } + }); + } + + async #translator_fromJsonLd( + jsonLd: unknown, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL + } + ): Promise { + const documentLoader = + options.documentLoader ?? this._documentLoader ?? getDocumentLoader(); + const contextLoader = + options.contextLoader ?? this._contextLoader ?? getDocumentLoader(); + const tracerProvider = options.tracerProvider ?? + this._tracerProvider ?? trace.getTracerProvider(); + const baseUrl = options.baseUrl; + + try { + return await Application.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Group.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Organization.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Person.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + try { + return await Service.fromJsonLd( + jsonLd, + { documentLoader, contextLoader, tracerProvider, baseUrl }, + ); + } catch (e) { + if (!(e instanceof TypeError)) throw e; + } + + throw new TypeError("Expected an object of any type of: " + + ["https://www.w3.org/ns/activitystreams#Application","https://www.w3.org/ns/activitystreams#Group","https://www.w3.org/ns/activitystreams#Organization","https://www.w3.org/ns/activitystreams#Person","https://www.w3.org/ns/activitystreams#Service"].join(", ")); + } + + + /** + * Similar to + * {@link Translation.getTranslator}, + * but returns its \`@id\` URL instead of the object itself. + */ + get translatorId(): URL | null { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length < 1) return null; + const v = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + if (v instanceof URL) return v; + return v.id; + } + +/** The actors credited for this language version. Their order has no + * meaning. Human actors credit translation or review; Application and + * Service actors credit machine output. If any actor cannot be resolved, + * the entry's human-or-machine status is unknown. Credit is asserted by + * the publisher and grants no publishing authority. Embedded actors with + * identifiers are fetched before being returned unless explicitly trusted. + * + */ + + async getTranslator( + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: "ignore" | "throw" | "trust"; + } = {} + ): Promise { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length < 1) return null; + let v = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + if (!(v instanceof URL) && + v.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(0)) { + v = v.id; + } + if (v instanceof URL) { + const fetched = + await this.#fetchTranslator(v, options); + if (fetched == null) return null; + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0] = fetched; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(0); + this._cachedJsonLd = undefined; + return fetched; + } + + if ( + this._cachedJsonLd != null && + typeof this._cachedJsonLd === "object" && + "@context" in this._cachedJsonLd && + "translator" in this._cachedJsonLd + ) { + const prop = this._cachedJsonLd[ + "translator"]; + const doc = Array.isArray(prop) ? prop[0] : prop; + if (doc != null && typeof doc === "object" && "@context" in doc) { + + v = await this.#translator_fromJsonLd(doc, { + ...options, + baseUrl: (options as { baseUrl?: URL }).baseUrl ?? + this._baseUrl ?? + (this.id != null && + (this.id.protocol === "http:" || + this.id.protocol === "https:") + ? this.id + : undefined), + }); + + } + } + + if (v?.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(0)) { + if (options.crossOrigin === "throw") { + throw new Error( + "The property object's @id (" + v.id.href + ") has a different " + + "origin than the property owner's @id (" + "untrusted metadata" + "); " + + "refusing to return the object. If you want to bypass this " + + "check and are aware of the security implications, set the " + + 'crossOrigin option to "trust".' + ); + } + getLogger(["fedify", "vocab"]).warn( + "The property object's @id ({objectId}) has a different origin " + + "than the property owner's @id ({parentObjectId}); refusing to " + + "return the object. If you want to bypass this check and are " + + "aware of the security implications, set the crossOrigin option " + + 'to "trust".', + { objectId: v.id.href, parentObjectId: "untrusted metadata" }, + ); + return null; + } + return v; + } + + /** + * Similar to + * {@link Translation.getTranslators}, + * but returns their \`@id\`s instead of the objects themselves. + */ + get translatorIds(): URL[] { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + return this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.map((v) => + v instanceof URL ? v : v.id! + ).filter(id => id !== null); + } + +/** The actors credited for this language version. Their order has no + * meaning. Human actors credit translation or review; Application and + * Service actors credit machine output. If any actor cannot be resolved, + * the entry's human-or-machine status is unknown. Credit is asserted by + * the publisher and grants no publishing authority. Embedded actors with + * identifiers are fetched before being returned unless explicitly trusted. + * + */ + + async* getTranslators( + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + suppressError?: boolean, + tracerProvider?: TracerProvider, + crossOrigin?: "ignore" | "throw" | "trust"; + } = {} + ): AsyncIterable { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + const vs = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + for (let i = 0; i < vs.length; i++) { + let v = vs[i]; + if (!(v instanceof URL) && + v.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(i)) { + v = v.id; + } + if (v instanceof URL) { + const fetched = + await this.#fetchTranslator(v, options); + if (fetched == null) continue; + vs[i] = fetched; + this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.add(i); + this._cachedJsonLd = undefined; + yield fetched; + continue; + } + + if ( + this._cachedJsonLd != null && + typeof this._cachedJsonLd === "object" && + "@context" in this._cachedJsonLd && + "translator" in this._cachedJsonLd + ) { + const prop = this._cachedJsonLd[ + "translator"]; + const obj = Array.isArray(prop) ? prop[i] : prop; + if (obj != null && typeof obj === "object" && "@context" in obj) { + + v = await this.#translator_fromJsonLd(obj, { + ...options, + baseUrl: (options as { baseUrl?: URL }).baseUrl ?? + this._baseUrl ?? + (this.id != null && + (this.id.protocol === "http:" || + this.id.protocol === "https:") + ? this.id + : undefined), + }); + + } + } + + if (v?.id != null && + !isTrustedIriOrigin(options, v.id, null) && + !this.#_trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.has(i)) { + if (options.crossOrigin === "throw") { + throw new Error( + "The property object's @id (" + v.id.href + ") has a different " + + "origin than the property owner's @id (" + "untrusted metadata" + "); " + + "refusing to return the object. If you want to bypass this " + + "check and are aware of the security implications, set the " + + 'crossOrigin option to "trust".' + ); + } + getLogger(["fedify", "vocab"]).warn( + "The property object's @id ({objectId}) has a different origin " + + "than the property owner's @id ({parentObjectId}); refusing to " + + "return the object. If you want to bypass this check and are " + + "aware of the security implications, set the crossOrigin " + + 'option to "trust".', + { objectId: v.id.href, parentObjectId: "untrusted metadata" }, + ); + continue; + } + yield v; + } + } + +/** The identifier of the containing object. FEP-22cd translations share + * that object's identity rather than introducing separate posts. + * + */ + get original(): (URL | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7.length < 1) return null; + return this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7[0]; + } + +/** The source object's updated timestamp (or published timestamp if it has + * no updated timestamp) at the last human review of this translation. + * An absent value makes no freshness claim. A value earlier than the + * current source timestamp indicates a potentially stale translation; + * an equal or later value reflects the current source. + * + */ + get sourceUpdated(): (Temporal.Instant | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.length < 1) return null; + return this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated[0]; + } + +/** An optional public revision resource identifying the source reviewed. + * Supplements sourceUpdated without requiring private revision history + * to be exposed. + * + */ + get basis(): (URL | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW.length < 1) return null; + return this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW[0]; + } + +/** Links to renderings of this specific language version. + */ + get url(): (URL | Link | null) { + if (this._warning != null) { + getLogger(this._warning.category).warn( + this._warning.message, + this._warning.values + ); + } + if (this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length < 1) return null; + return this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url[0]; + } + +/** Links to renderings of this specific language version. + */ +get urls(): ((URL | Link))[] { + return this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + } + + /** + * Converts this object to a JSON-LD structure. + * @param options The options to use. + * - \`format\`: The format of the output: \`compact\` or + \`expand\`. + * - \`contextLoader\`: The loader for remote JSON-LD contexts. + * - \`context\`: The JSON-LD context to use. Not applicable + when \`format\` is set to \`'expand'\`. + * @returns The JSON-LD representation of this object. + */ + async toJsonLd(options: { + format?: "compact" | "expand", + contextLoader?: DocumentLoader, + context?: string | Record | (string | Record)[], + } = {}): Promise { + if (options.format == null && this._cachedJsonLd != null) { + return this._cachedJsonLd; + } + if (options.format !== "compact" && options.context != null) { + throw new TypeError( + "The context option can only be used when the format option is set " + + "to 'compact'." + ); + } + options = { + ...options, + contextLoader: options.contextLoader ?? getDocumentLoader(), + }; + + if (options.format == null && this.isCompactable()) { + const result: Record = {}; + // deno-lint-ignore no-unused-vars + let compactItems: unknown[]; + + compactItems = []; + for (const v of this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG) { + const item = ( + v.baseName + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result["inLanguage"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR) { + const item = ( + v instanceof URL ? formatIri(v) : v instanceof Application ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Group ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Organization ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : v instanceof Person ? await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) : await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result["translator"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7) { + const item = ( + formatIri(v) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result["translationOfWork"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated) { + const item = ( + v.toString() + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result["sourceUpdated"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW) { + const item = ( + formatIri(v) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result["isBasedOn"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + compactItems = []; + for (const v of this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url) { + const item = ( + v instanceof URL ? formatIri(v) : await v.toJsonLd({ + ...(options), + format: undefined, + context: undefined, + }) + ); + compactItems.push(item); + } + if (compactItems.length > 0) { + + result["url"] + = compactItems.length > 1 + ? compactItems + : compactItems[0]; + + } + + result["type"] = "Translation"; + if (this.id != null) result["id"] = formatIri(this.id); + result["@context"] = ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/22cd"]; + return result; + } + + // deno-lint-ignore no-unused-vars prefer-const + let array: unknown[]; + const values: Record = {}; + array = []; + for (const v of this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG) { + let element = ( + { "@value": v.baseName } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === "undefined") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values["https://schema.org/inLanguage"] = propValue; + + } + + array = []; + for (const v of this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR) { + let element = ( + v instanceof URL ? { "@id": formatIri(v) } : v instanceof Application ? await v.toJsonLd(options) : v instanceof Group ? await v.toJsonLd(options) : v instanceof Organization ? await v.toJsonLd(options) : v instanceof Person ? await v.toJsonLd(options) : await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === "undefined") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values["https://schema.org/translator"] = propValue; + + } + + array = []; + for (const v of this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7) { + let element = ( + { "@id": formatIri(v) } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === "undefined") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values["https://schema.org/translationOfWork"] = propValue; + + } + + array = []; + for (const v of this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated) { + let element = ( + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": v.toString(), + } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === "undefined") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values["https://w3id.org/fep/22cd#sourceUpdated"] = propValue; + + } + + array = []; + for (const v of this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW) { + let element = ( + { "@id": formatIri(v) } + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === "undefined") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values["https://schema.org/isBasedOn"] = propValue; + + } + + array = []; + for (const v of this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url) { + let element = ( + v instanceof URL ? { "@id": formatIri(v) } : await v.toJsonLd(options) + ); + if (Array.isArray(element)) { + if (element.length < 1) continue; + if (element.length == 1) element = element[0]; + } + if (typeof element === "undefined") continue; + array.push(element);; + } + if (array.length > 0) { + const propValue = ( + array + ); + values["https://www.w3.org/ns/activitystreams#url"] = propValue; + + } + + values["@type"] = ["https://w3id.org/fep/22cd#Translation"]; + if (this.id != null) values["@id"] = formatIri(this.id); + if (options.format === "expand") { + return await jsonld.expand( + values, + { + documentLoader: options.contextLoader, + keepFreeFloatingNodes: true, + }, + ); + } + let docContext: Parameters[1] = options.context ?? + ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/22cd"]; + let compacted = await jsonld.compact( + values, + docContext, + { documentLoader: options.contextLoader }, + ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + + if (docContext != null) { + // Embed context + + } + return compacted; + } + + protected isCompactable(): boolean { + + if ( + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR != null && + this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 0 + ) return false; + + return true; + } + + /** + * Converts a JSON-LD structure to an object of this type. + * @param json The JSON-LD structure to convert. + * @param options The options to use. + * - \`documentLoader\`: The loader for remote JSON-LD documents. + * - \`contextLoader\`: The loader for remote JSON-LD contexts. + * - \`tracerProvider\`: The OpenTelemetry tracer provider to use. + * If omitted, the global tracer provider is used. + * @returns The object of this type. + * @throws {TypeError} If the given \`json\` is invalid. + */ + static async fromJsonLd( + json: unknown, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL, + } = {}, + ): Promise { + const tracerProvider = options.tracerProvider ?? trace.getTracerProvider(); + const tracer = tracerProvider.getTracer( + "@fedify/vocab-tools", + "0.0.0", + ); + return await tracer.startActiveSpan( + "activitypub.parse_object", + async (span) => { + try { + const object = await this.__fromJsonLd__Translation__( + json, span, options); + if (object.id != null) { + span.setAttribute("activitypub.object.id", object.id.href); + } + return object; + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: String(error), + }); + throw error; + } finally { + span.end(); + } + }, + ); + } + + protected static async __fromJsonLd__Translation__( + json: unknown, + span: Span, + options: { + documentLoader?: DocumentLoader, + contextLoader?: DocumentLoader, + tracerProvider?: TracerProvider, + baseUrl?: URL, + } = {}, + ): Promise { + if (typeof json === "undefined") { + throw new TypeError("Invalid JSON-LD: undefined."); + } + else if (json === null) throw new TypeError("Invalid JSON-LD: null."); + options = { + ...options, + documentLoader: options.documentLoader ?? getDocumentLoader(), + contextLoader: options.contextLoader ?? getDocumentLoader(), + tracerProvider: options.tracerProvider ?? trace.getTracerProvider(), + }; + // deno-lint-ignore no-explicit-any + let values: Record & { "@id"?: string }; + let expanded: unknown[]; + if ( + "_fromSubclass" in options && + options._fromSubclass && + typeof json === "object" && + !Array.isArray(json) + ) { + values = + // deno-lint-ignore no-explicit-any + json as (Record & { "@id"?: string }); + expanded = [values]; + } else if (globalThis.Object.keys(json).length == 0) { + values = {}; + expanded = [values]; + } else { + expanded = await jsonld.expand(json, { + documentLoader: options.contextLoader, + keepFreeFloatingNodes: true, + }); + values = + // deno-lint-ignore no-explicit-any + (expanded[0] ?? {}) as (Record & { "@id"?: string }); + } + const id = parseJsonLdId(values["@id"], options.baseUrl); + if (id != null && options.baseUrl == null) { + options = { ...options, baseUrl: id }; + } + + if ("@type" in values) { + span.setAttribute("activitypub.object.type", values["@type"]); + } + if ("@type" in values && + !values["@type"].every(t => t.startsWith("_:"))) { + + if (!values["@type"].includes("https://w3id.org/fep/22cd#Translation")) { + throw new TypeError("Invalid type: " + values["@type"]); + } + } + + let cacheJsonLd = !("_fromSubclass" in options) || !options._fromSubclass + ? normalizeJsonLdIris( + expanded, + PORTABLE_IRI_KEYS, + PORTABLE_IRI_PATTERN, + ) + : undefined; + if (cacheJsonLd != null && cacheJsonLd !== expanded) { + cacheJsonLd = structuredClone(cacheJsonLd); + } + + const instance = new this( + { + id + }, + options, + ); + + let shouldCacheJsonLd = instance._shouldCacheJsonLd; + const _diXuPmFWiEqfLPhhrxg6Xc7ixZG: (Intl.Locale)[] = []; + + let _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array = values["https://schema.org/inLanguage"]; + + for ( + const v of _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array == null + ? [] + : _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array.length === 1 && "@list" in _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array[0] + ? _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array[0]["@list"] + : _diXuPmFWiEqfLPhhrxg6Xc7ixZG__array + ) { + if (v == null) continue; + + const decoded = + new Intl.Locale(v["@value"]) + ; + + if (typeof decoded === "undefined") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _diXuPmFWiEqfLPhhrxg6Xc7ixZG.push(decoded); + + } + instance.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG = _diXuPmFWiEqfLPhhrxg6Xc7ixZG; + + const _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: (Application | Group | Organization | Person | Service | URL)[] = []; + const _trust_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR: Set = new Set(); + + let _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array = values["https://schema.org/translator"]; + + for ( + const v of _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array == null + ? [] + : _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array.length === 1 && "@list" in _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array[0] + ? _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array[0]["@list"] + : _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR__array + ) { + if (v == null) continue; + + if (typeof v === "object" && "@id" in v && !("@type" in v) + && globalThis.Object.keys(v).length === 1) { + if (v["@id"].startsWith("_:")) continue; + _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.push(parseIri(v["@id"], options.baseUrl)); + continue; + } + + const decoded = + typeof v === "object" && "@type" in v + && Array.isArray(v["@type"])&& v["@type"].includes("https://www.w3.org/ns/activitystreams#Application") ? await Application.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === "object" && "@type" in v + && Array.isArray(v["@type"])&& v["@type"].includes("https://www.w3.org/ns/activitystreams#Group") ? await Group.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === "object" && "@type" in v + && Array.isArray(v["@type"])&& v["@type"].includes("https://www.w3.org/ns/activitystreams#Organization") ? await Organization.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === "object" && "@type" in v + && Array.isArray(v["@type"])&& v["@type"].includes("https://www.w3.org/ns/activitystreams#Person") ? await Person.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : typeof v === "object" && "@type" in v + && Array.isArray(v["@type"])&& v["@type"].includes("https://www.w3.org/ns/activitystreams#Service") ? await Service.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : undefined + ; + + if (typeof decoded === "undefined") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.push(decoded); + + } + instance.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + const _Msz9PwRg7cWkiXPL4ixyQLtuuH7: (URL)[] = []; + + let _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array = values["https://schema.org/translationOfWork"]; + + for ( + const v of _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array == null + ? [] + : _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array.length === 1 && "@list" in _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array[0] + ? _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array[0]["@list"] + : _Msz9PwRg7cWkiXPL4ixyQLtuuH7__array + ) { + if (v == null) continue; + + const decoded = + parseIri(v["@id"], options.baseUrl) + ; + + if (typeof decoded === "undefined") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _Msz9PwRg7cWkiXPL4ixyQLtuuH7.push(decoded); + + } + instance.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 = _Msz9PwRg7cWkiXPL4ixyQLtuuH7; + const _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated: (Temporal.Instant)[] = []; + + let _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array = values["https://w3id.org/fep/22cd#sourceUpdated"]; + + for ( + const v of _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array == null + ? [] + : _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array.length === 1 && "@list" in _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array[0] + ? _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array[0]["@list"] + : _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated__array + ) { + if (v == null) continue; + + const decoded = + Temporal.Instant.from( + v["@value"].substring(19).match(/[Z+-]/) + ? v["@value"] + : v["@value"] + "Z" + ) + ; + + if (typeof decoded === "undefined") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.push(decoded); + + } + instance.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated; + const _4KvkQNz1JjGs8S7iJDcGrUYETbUW: (URL)[] = []; + + let _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array = values["https://schema.org/isBasedOn"]; + + for ( + const v of _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array == null + ? [] + : _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array.length === 1 && "@list" in _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array[0] + ? _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array[0]["@list"] + : _4KvkQNz1JjGs8S7iJDcGrUYETbUW__array + ) { + if (v == null) continue; + + const decoded = + parseIri(v["@id"], options.baseUrl) + ; + + if (typeof decoded === "undefined") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _4KvkQNz1JjGs8S7iJDcGrUYETbUW.push(decoded); + + } + instance.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW = _4KvkQNz1JjGs8S7iJDcGrUYETbUW; + const _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url: ((URL | Link))[] = []; + + let _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array = values["https://www.w3.org/ns/activitystreams#url"]; + + for ( + const v of _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array == null + ? [] + : _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array.length === 1 && "@list" in _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array[0] + ? _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array[0]["@list"] + : _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url__array + ) { + if (v == null) continue; + + const decoded = + v != null && typeof v === "object" && "@id" in v + && typeof v["@id"] === "string" + && v["@id"] !== "" ? parseIri(v["@id"], options.baseUrl) : typeof v === "object" && "@type" in v + && Array.isArray(v["@type"])&& ["https://www.w3.org/ns/activitystreams#Link","https://www.w3.org/ns/activitystreams#Hashtag","https://www.w3.org/ns/activitystreams#Mention"].some( + t => v["@type"].includes(t)) ? await Link.fromJsonLd( + v, + { ...options, baseUrl: options.baseUrl } + ) : undefined + ; + + if (typeof decoded === "undefined") { + shouldCacheJsonLd = false; + continue; + } + + if (!this._shouldCacheDecodedJsonLd(decoded)) { + shouldCacheJsonLd = false; + } + _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.push(decoded); + + } + instance.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + + instance._shouldCacheJsonLd = shouldCacheJsonLd; + if ( + shouldCacheJsonLd && + (!("_fromSubclass" in options) || !options._fromSubclass) + ) { + try { + if (cacheJsonLd != null && cacheJsonLd !== expanded) { + const compactArray = Array.isArray(json) && json.length === 1; + const jsonLd = compactArray ? json[0] : json; + const normalized = cacheJsonLd; + const cachedJsonLd = await compactJsonLdCache( + normalized, + jsonLd, + options.contextLoader, + ); + instance._cachedJsonLd = compactArray ? [cachedJsonLd] : cachedJsonLd; + } else { + instance._cachedJsonLd = structuredClone(json); + } + } catch { + getLogger(["fedify", "vocab"]).warn( + "Failed to cache JSON-LD: {json}", + { json }, + ); + } + } + return instance; + } + + protected _getCustomInspectProxy(): Record { + + const proxy: Record = {}; + if (this.id != null) { + proxy.id = { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(this.id!.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(this.id!.href, options), + }; + } + + const _diXuPmFWiEqfLPhhrxg6Xc7ixZG = this.#_diXuPmFWiEqfLPhhrxg6Xc7ixZG + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(v.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(v.href, options), + } + : v); + + if (_diXuPmFWiEqfLPhhrxg6Xc7ixZG.length == 1) { + proxy.language = _diXuPmFWiEqfLPhhrxg6Xc7ixZG[0]; + } + + const _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR = this.#_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(v.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(v.href, options), + } + : v); + + if (_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length == 1) { + proxy.translator = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR[0]; + } + + if (_hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 1 + || !("translator" in proxy) + && _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR.length > 0) { + proxy.translators = _hQqsdZa1zG8Ra1bQ3MBVsnmGnBR; + } + + const _Msz9PwRg7cWkiXPL4ixyQLtuuH7 = this.#_Msz9PwRg7cWkiXPL4ixyQLtuuH7 + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(v.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(v.href, options), + } + : v); + + if (_Msz9PwRg7cWkiXPL4ixyQLtuuH7.length == 1) { + proxy.original = _Msz9PwRg7cWkiXPL4ixyQLtuuH7[0]; + } + + const _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated = this.#_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(v.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(v.href, options), + } + : v); + + if (_yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated.length == 1) { + proxy.sourceUpdated = _yTNTBtDbKTVj9kzyXpuk3rzbcGv_sourceUpdated[0]; + } + + const _4KvkQNz1JjGs8S7iJDcGrUYETbUW = this.#_4KvkQNz1JjGs8S7iJDcGrUYETbUW + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(v.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(v.href, options), + } + : v); + + if (_4KvkQNz1JjGs8S7iJDcGrUYETbUW.length == 1) { + proxy.basis = _4KvkQNz1JjGs8S7iJDcGrUYETbUW[0]; + } + + const _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url = this.#_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url + // deno-lint-ignore no-explicit-any + .map((v: any) => v instanceof URL + ? { + [Symbol.for("Deno.customInspect")]: ( + inspect: typeof Deno.inspect, + options: Deno.InspectOptions, + ): string => "URL " + inspect(v.href, options), + [Symbol.for("nodejs.util.inspect.custom")]: ( + _depth: number, + options: unknown, + inspect: (value: unknown, options: unknown) => string, + ): string => "URL " + inspect(v.href, options), + } + : v); + + if (_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length == 1) { + proxy.url = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url[0]; + } + + if (_2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length > 1 + || !("url" in proxy) + && _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url.length > 0) { + proxy.urls = _2oPEH9MQ3aj8JVwyYuWkqoVwV865_url; + } + return proxy; } } // deno-lint-ignore no-explicit-any -(QuoteRequest.prototype as any)[Symbol.for("Deno.customInspect")] = +(Translation.prototype as any)[Symbol.for("Deno.customInspect")] = function ( - this: QuoteRequest, + this: Translation, inspect: typeof Deno.inspect, options: Deno.InspectOptions, ): string { const proxy = this._getCustomInspectProxy(); - return "QuoteRequest " + inspect(proxy, options); + return "Translation " + inspect(proxy, options); }; // deno-lint-ignore no-explicit-any -(QuoteRequest.prototype as any)[Symbol.for("nodejs.util.inspect.custom")] = +(Translation.prototype as any)[Symbol.for("nodejs.util.inspect.custom")] = function ( - this: QuoteRequest, + this: Translation, _depth: number, options: unknown, inspect: (value: unknown, options: unknown) => string, ): string { const proxy = this._getCustomInspectProxy(); - return "QuoteRequest " + inspect(proxy, options); + return "Translation " + inspect(proxy, options); }; /** Proves that an actor consented to being included in a * {@link FeaturedCollection}. @@ -28456,7 +30626,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -28518,7 +30688,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];interactingObject?: Object | URL | null;interactionTarget?: Object | URL | null;} = {}, options: { @@ -29166,13 +31336,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -29552,7 +31736,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -29594,7 +31778,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -29673,13 +31857,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -29972,7 +32170,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -30183,7 +32381,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;} = {}, options: { @@ -33727,13 +35925,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","ChatMessage":"http://litepub.social/ns#ChatMessage","sensitive":"as:sensitive","votersCount":"toot:votersCount","Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -34795,7 +37007,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} , options: { documentLoader?: DocumentLoader, @@ -34850,7 +37062,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];} = {}, options: { @@ -35240,13 +37452,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","ChatMessage":"http://litepub.social/ns#ChatMessage","sensitive":"as:sensitive","votersCount":"toot:votersCount","Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -35576,7 +37802,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} , options: { documentLoader?: DocumentLoader, @@ -35638,7 +37864,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;items?: (Object | Link | URL)[];topic?: Hashtag | null;discoverable?: boolean | null;} = {}, options: { @@ -35861,13 +38087,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9",{"toot":"http://joinmastodon.org/ns#","sensitive":"as:sensitive","discoverable":"toot:discoverable","Hashtag":"as:Hashtag"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -36228,7 +38468,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -36290,7 +38530,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];featuredObject?: Object | URL | null;featureAuthorization?: FeatureAuthorization | URL | null;} = {}, options: { @@ -36940,13 +39180,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -37591,13 +39845,27 @@ get endpoints(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://www.w3.org/ns/did/v1"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -37987,13 +40255,27 @@ endpoints?: (URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://www.w3.org/ns/did/v1"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -38899,13 +41181,27 @@ cryptosuite?: "eddsa-jcs-2022" | null;verificationMethod?: Multikey | URL | null }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://w3id.org/security/data-integrity/v1"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -40007,13 +42303,27 @@ owner?: Application | Group | Organization | Person | Service | URL | null;publi }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://w3id.org/security/v1"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -40992,13 +43302,27 @@ controller?: Application | Group | Organization | Person | Service | URL | null; }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://w3id.org/security/multikey/v1"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -41390,7 +43714,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} , options: { documentLoader?: DocumentLoader, @@ -41452,7 +43776,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];stipulates?: Commitment | null;stipulatesReciprocal?: Commitment | null;} = {}, options: { @@ -41680,13 +44004,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"vf":"https://w3id.org/valueflows/ont/vf#","om2":"http://www.ontology-of-units-of-measure.org/resource/om-2/","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"},"Agreement":"vf:Agreement","Commitment":"vf:Commitment","stipulates":"vf:stipulates","stipulatesReciprocal":"vf:stipulatesReciprocal","satisfies":{"@id":"vf:satisfies","@type":"@id"},"resourceQuantity":"vf:resourceQuantity","hasUnit":"om2:hasUnit","hasNumericalValue":"om2:hasNumericalValue"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -42370,13 +44708,27 @@ satisfies?: URL | null;resourceQuantity?: Measure | null;} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams",{"vf":"https://w3id.org/valueflows/ont/vf#","om2":"http://www.ontology-of-units-of-measure.org/resource/om-2/","Commitment":"vf:Commitment","satisfies":{"@id":"vf:satisfies","@type":"@id"},"resourceQuantity":"vf:resourceQuantity","hasUnit":"om2:hasUnit","hasNumericalValue":"om2:hasNumericalValue"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -43289,13 +45641,27 @@ action?: string | null;resourceConformsTo?: URL | null;resourceQuantity?: Measur }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams",{"vf":"https://w3id.org/valueflows/ont/vf#","om2":"http://www.ontology-of-units-of-measure.org/resource/om-2/","Intent":"vf:Intent","action":"vf:action","resourceConformsTo":{"@id":"vf:resourceConformsTo","@type":"@id"},"resourceQuantity":"vf:resourceQuantity","availableQuantity":"vf:availableQuantity","minimumQuantity":"vf:minimumQuantity","hasUnit":"om2:hasUnit","hasNumericalValue":"om2:hasNumericalValue"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -43816,7 +46182,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} , options: { documentLoader?: DocumentLoader, @@ -43904,7 +46270,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];purpose?: string | null;publishes?: Intent | null;reciprocal?: Intent | null;unitBased?: boolean | null;} = {}, options: { @@ -44257,13 +46623,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"vf":"https://w3id.org/valueflows/ont/vf#","om2":"http://www.ontology-of-units-of-measure.org/resource/om-2/","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"},"Proposal":"vf:Proposal","Intent":"vf:Intent","purpose":"vf:purpose","unitBased":"vf:unitBased","publishes":"vf:publishes","reciprocal":"vf:reciprocal","action":"vf:action","resourceConformsTo":{"@id":"vf:resourceConformsTo","@type":"@id"},"resourceQuantity":"vf:resourceQuantity","availableQuantity":"vf:availableQuantity","minimumQuantity":"vf:minimumQuantity","hasUnit":"om2:hasUnit","hasNumericalValue":"om2:hasNumericalValue"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -44719,7 +47099,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -44761,7 +47141,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -44840,13 +47220,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45105,7 +47499,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45147,7 +47541,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45226,13 +47620,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45486,7 +47894,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45528,7 +47936,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -45607,13 +48015,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","votersCount":{"@id":"toot:votersCount","@type":"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"},"Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -45916,7 +48338,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -46430,7 +48852,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -51901,13 +54323,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/ef61","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9",{"alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},"featuredCollections":{"@id":"https://w3id.org/fep/7aa9#featuredCollections","@type":"@id"},"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","movedTo":{"@id":"as:movedTo","@type":"@id"},"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","featured":{"@id":"toot:featured","@type":"@id"},"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},"discoverable":"toot:discoverable","suspended":"toot:suspended","memorial":"toot:memorial","indexable":"toot:indexable","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value","misskey":"https://misskey-hub.net/ns#","_misskey_followedMessage":"misskey:_misskey_followedMessage","isCat":"misskey:isCat"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -53606,7 +56042,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -53648,7 +56084,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -53727,13 +56163,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -53999,7 +56449,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -54041,7 +56491,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -54120,13 +56570,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -54384,7 +56848,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -54459,7 +56923,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -55198,13 +57662,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -55637,7 +58115,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -55712,7 +58190,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -56002,13 +58480,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v2",{"digestMultibase":"https://www.w3.org/ns/credentials/v2#digestMultibase"},"https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -56422,7 +58914,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -56458,7 +58950,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -56548,13 +59040,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v2",{"digestMultibase":"https://www.w3.org/ns/credentials/v2#digestMultibase"},"https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -56807,7 +59313,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -56849,7 +59355,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -56928,13 +59434,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -57193,7 +59713,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -57235,7 +59755,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -57314,13 +59834,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -57583,7 +60117,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -57658,7 +60192,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;items?: (Object | Link | URL)[];likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;} = {}, options: { @@ -58588,13 +61122,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","ChatMessage":"http://litepub.social/ns#ChatMessage","sensitive":"as:sensitive","votersCount":"toot:votersCount","Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59032,7 +61580,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59074,7 +61622,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59153,13 +61701,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","votersCount":{"@id":"toot:votersCount","@type":"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"},"Emoji":"toot:Emoji","Hashtag":"as:Hashtag","ChatMessage":"http://litepub.social/ns#ChatMessage","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59412,7 +61974,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59454,7 +62016,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59533,13 +62095,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","votersCount":{"@id":"toot:votersCount","@type":"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"},"Emoji":"toot:Emoji","Hashtag":"as:Hashtag","ChatMessage":"http://litepub.social/ns#ChatMessage","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -59790,7 +62366,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59832,7 +62408,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -59911,13 +62487,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -60896,13 +63486,27 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://www.w3.org/ns/activitystreams"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -61496,7 +64100,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} , options: { documentLoader?: DocumentLoader, @@ -61532,7 +64136,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];} = {}, options: { @@ -61622,13 +64226,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -61882,7 +64500,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -61924,7 +64542,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62003,13 +64621,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -62264,7 +64896,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62306,7 +64938,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -62385,13 +65017,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -62694,7 +65340,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -63208,7 +65854,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -68679,13 +71325,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/ef61","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9",{"alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},"featuredCollections":{"@id":"https://w3id.org/fep/7aa9#featuredCollections","@type":"@id"},"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","movedTo":{"@id":"as:movedTo","@type":"@id"},"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","featured":{"@id":"toot:featured","@type":"@id"},"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},"discoverable":"toot:discoverable","suspended":"toot:suspended","memorial":"toot:memorial","indexable":"toot:indexable","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value","misskey":"https://misskey-hub.net/ns#","_misskey_followedMessage":"misskey:_misskey_followedMessage","isCat":"misskey:isCat"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -71630,13 +74290,27 @@ get names(): ((string | LanguageString))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/ef61"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -72479,13 +75153,27 @@ names?: ((string | LanguageString))[];language?: Intl.Locale | null;height?: num }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams",{"Hashtag":"as:Hashtag"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -72725,7 +75413,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -72761,7 +75449,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -72851,13 +75539,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v2",{"digestMultibase":"https://www.w3.org/ns/credentials/v2#digestMultibase"},"https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73111,7 +75813,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73153,7 +75855,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73232,13 +75934,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73495,7 +76211,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73537,7 +76253,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73616,13 +76332,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -73875,7 +76605,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73917,7 +76647,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -73996,13 +76726,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -74255,7 +76999,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74297,7 +77041,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74376,13 +77120,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -74635,7 +77393,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74677,7 +77435,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -74756,13 +77514,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75013,7 +77785,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75055,7 +77827,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75134,13 +77906,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75489,13 +78275,27 @@ names?: ((string | LanguageString))[];language?: Intl.Locale | null;height?: num }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://www.w3.org/ns/activitystreams"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -75738,7 +78538,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75780,7 +78580,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -75859,13 +78659,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -76125,7 +78939,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -76200,7 +79014,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];quote?: Object | URL | null;quoteUrl?: URL | null;quoteAuthorization?: QuoteAuthorization | URL | null;} = {}, options: { @@ -76939,13 +79753,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -77382,7 +80210,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} , options: { documentLoader?: DocumentLoader, @@ -77450,7 +80278,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];totalItems?: number | null;current?: CollectionPage | URL | null;first?: CollectionPage | URL | null;last?: CollectionPage | URL | null;likesOf?: Object | URL | null;sharesOf?: Object | URL | null;repliesOf?: Object | URL | null;inboxOf?: Object | URL | null;outboxOf?: Object | URL | null;followersOf?: Object | URL | null;followingOf?: Object | URL | null;likedOf?: Object | URL | null;partOf?: Collection | URL | null;next?: CollectionPage | URL | null;prev?: CollectionPage | URL | null;items?: (Object | Link | URL)[];startIndex?: number | null;} = {}, options: { @@ -77907,13 +80735,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","ChatMessage":"http://litepub.social/ns#ChatMessage","sensitive":"as:sensitive","votersCount":"toot:votersCount","Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -78335,7 +81177,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -78849,7 +81691,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -84320,13 +87162,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/ef61","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9",{"alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},"featuredCollections":{"@id":"https://w3id.org/fep/7aa9#featuredCollections","@type":"@id"},"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","movedTo":{"@id":"as:movedTo","@type":"@id"},"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","featured":{"@id":"toot:featured","@type":"@id"},"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},"discoverable":"toot:discoverable","suspended":"toot:suspended","memorial":"toot:memorial","indexable":"toot:indexable","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value","misskey":"https://misskey-hub.net/ns#","_misskey_followedMessage":"misskey:_misskey_followedMessage","isCat":"misskey:isCat"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -86022,7 +88878,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -86058,7 +88914,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -86148,13 +89004,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v2",{"digestMultibase":"https://www.w3.org/ns/credentials/v2#digestMultibase"},"https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -86457,7 +89327,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -86971,7 +89841,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -92442,13 +95312,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/ef61","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9",{"alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},"featuredCollections":{"@id":"https://w3id.org/fep/7aa9#featuredCollections","@type":"@id"},"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","movedTo":{"@id":"as:movedTo","@type":"@id"},"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","featured":{"@id":"toot:featured","@type":"@id"},"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},"discoverable":"toot:discoverable","suspended":"toot:suspended","memorial":"toot:memorial","indexable":"toot:indexable","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value","misskey":"https://misskey-hub.net/ns#","_misskey_followedMessage":"misskey:_misskey_followedMessage","isCat":"misskey:isCat"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -94153,7 +97037,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: "cm" | "feet" | "inches" | "km" | "m" | "miles" | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: "cm" | "feet" | "inches" | "km" | "m" | "miles" | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -94267,7 +97151,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: "cm" | "feet" | "inches" | "km" | "m" | "miles" | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];accuracy?: number | null;altitude?: number | null;latitude?: number | null;longitude?: number | null;radius?: number | null;units?: "cm" | "feet" | "inches" | "km" | "m" | "miles" | URL | null;} = {}, options: { @@ -94756,13 +97640,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -95318,7 +98216,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;describes?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];describes?: Object | URL | null;} , options: { documentLoader?: DocumentLoader, @@ -95367,7 +98265,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;describes?: Object | URL | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];describes?: Object | URL | null;} = {}, options: { @@ -95738,13 +98636,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -96079,7 +98991,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -96224,7 +99136,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -97530,13 +100442,27 @@ instruments?: (Object | URL)[];exclusiveOptions?: (Object | URL)[];inclusiveOpti }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns",{"toot":"http://joinmastodon.org/ns#","misskey":"https://misskey-hub.net/ns#","fedibird":"http://fedibird.com/ns#","sensitive":"as:sensitive","votersCount":{"@id":"toot:votersCount","@type":"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"},"Emoji":"toot:Emoji","Hashtag":"as:Hashtag","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"quoteUrl":"as:quoteUrl","_misskey_quote":"misskey:_misskey_quote","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98201,7 +101127,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98243,7 +101169,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98322,13 +101248,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98581,7 +101521,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98623,7 +101563,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -98702,13 +101642,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -98979,7 +101933,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;subject?: Object | URL | null;object?: Object | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];subject?: Object | URL | null;object?: Object | URL | null; objects?: (Object | URL)[];relationship?: Object | URL | null; relationships?: (Object | URL)[];} , @@ -99110,7 +102064,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;subject?: Object | URL | null;object?: Object | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];subject?: Object | URL | null;object?: Object | URL | null; objects?: (Object | URL)[];relationship?: Object | URL | null; relationships?: (Object | URL)[];} @@ -100319,13 +103273,27 @@ relationships?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -100773,7 +103741,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -100815,7 +103783,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -100894,13 +103862,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -101203,7 +104185,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -101717,7 +104699,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;preferredUsername?: string | LanguageString | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];preferredUsername?: string | LanguageString | null; preferredUsernames?: ((string | LanguageString))[];publicKey?: CryptographicKey | URL | null; publicKeys?: (CryptographicKey | URL)[];assertionMethod?: Multikey | URL | null; assertionMethods?: (Multikey | URL)[];gateway?: URL | null; @@ -107188,13 +110170,27 @@ get gateways(): (URL)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/fep/ef61","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns","https://w3id.org/fep/7aa9",{"alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},"featuredCollections":{"@id":"https://w3id.org/fep/7aa9#featuredCollections","@type":"@id"},"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","movedTo":{"@id":"as:movedTo","@type":"@id"},"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","featured":{"@id":"toot:featured","@type":"@id"},"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},"discoverable":"toot:discoverable","suspended":"toot:suspended","memorial":"toot:memorial","indexable":"toot:indexable","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value","misskey":"https://misskey-hub.net/ns#","_misskey_followedMessage":"misskey:_misskey_followedMessage","isCat":"misskey:isCat"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -109263,13 +112259,27 @@ get contents(): ((string | LanguageString))[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? "https://www.w3.org/ns/activitystreams"; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -109635,7 +112645,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -109677,7 +112687,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -109756,13 +112766,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -110015,7 +113039,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -110057,7 +113081,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -110136,13 +113160,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -110398,7 +113436,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;formerType?: $EntityType | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];formerType?: $EntityType | null; formerTypes?: ($EntityType)[];deleted?: Temporal.Instant | null;} , options: { @@ -110484,7 +113522,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;formerType?: $EntityType | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];formerType?: $EntityType | null; formerTypes?: ($EntityType)[];deleted?: Temporal.Instant | null;} = {}, @@ -110737,13 +113775,27 @@ get formerTypes(): ($EntityType)[] { }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111124,7 +114176,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111166,7 +114218,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111245,13 +114297,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111509,7 +114575,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111551,7 +114617,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111630,13 +114696,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns",{"litepub":"http://litepub.social/ns#","toot":"http://joinmastodon.org/ns#","EmojiReact":"litepub:EmojiReact","Emoji":"toot:Emoji"}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -111892,7 +114972,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -111934,7 +115014,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112013,13 +115093,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1","https://gotosocial.org/ns",{"alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","movedTo":{"@id":"as:movedTo","@type":"@id"},"quoteUrl":"as:quoteUrl","toot":"http://joinmastodon.org/ns#","featured":{"@id":"toot:featured","@type":"@id"},"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},"discoverable":"toot:discoverable","suspended":"toot:suspended","memorial":"toot:memorial","indexable":"toot:indexable","votersCount":{"@id":"toot:votersCount","@type":"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"},"Emoji":"toot:Emoji","Hashtag":"as:Hashtag","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value","ChatMessage":"http://litepub.social/ns#ChatMessage","quote":{"@id":"https://w3id.org/fep/044f#quote","@type":"@id"},"fedibird":"http://fedibird.com/ns#","quoteUri":"fedibird:quoteUri","QuoteAuthorization":"https://w3id.org/fep/044f#QuoteAuthorization","QuoteRequest":"https://w3id.org/fep/044f#QuoteRequest","quoteAuthorization":{"@id":"https://w3id.org/fep/044f#quoteAuthorization","@type":"@id"},"misskey":"https://misskey-hub.net/ns#","_misskey_quote":"misskey:_misskey_quote","_misskey_followedMessage":"misskey:_misskey_followedMessage","isCat":"misskey:isCat","emojiReactions":{"@id":"fedibird:emojiReactions","@type":"@id"}}]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -112270,7 +115364,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} , options: { documentLoader?: DocumentLoader, @@ -112306,7 +115400,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;width?: number | null;height?: number | null;digestMultibase?: string | null;} +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];width?: number | null;height?: number | null;digestMultibase?: string | null;} = {}, options: { @@ -112396,13 +115490,27 @@ proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | nu }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v2",{"digestMultibase":"https://www.w3.org/ns/credentials/v2#digestMultibase"},"https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context @@ -112654,7 +115762,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112696,7 +115804,7 @@ tos?: (Object | URL)[];bto?: Object | URL | null; btos?: (Object | URL)[];cc?: Object | URL | null; ccs?: (Object | URL)[];bcc?: Object | URL | null; bccs?: (Object | URL)[];mediaType?: string | null;duration?: Temporal.Duration | null;sensitive?: boolean | null;source?: Source | null;proof?: DataIntegrityProof | URL | null; -proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;actor?: Application | Group | Organization | Person | Service | URL | null; +proofs?: (DataIntegrityProof | URL)[];interactionPolicy?: InteractionPolicy | null;approvedBy?: URL | null;likeAuthorization?: LikeAuthorization | URL | null;replyAuthorization?: ReplyAuthorization | URL | null;announceAuthorization?: AnnounceAuthorization | URL | null;translations?: (Translation)[];actor?: Application | Group | Organization | Person | Service | URL | null; actors?: (Application | Group | Organization | Person | Service | URL)[];object?: Object | URL | null; objects?: (Object | URL)[];target?: Object | URL | null; targets?: (Object | URL)[];result?: Object | URL | null; @@ -112775,13 +115883,27 @@ instruments?: (Object | URL)[];} }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ["https://w3id.org/identity/v1","https://www.w3.org/ns/activitystreams","https://w3id.org/security/data-integrity/v1","https://gotosocial.org/ns"]; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + if (docContext != null) { // Embed context diff --git a/packages/vocab-tools/src/class.ts b/packages/vocab-tools/src/class.ts index c645f9c22..687e04746 100644 --- a/packages/vocab-tools/src/class.ts +++ b/packages/vocab-tools/src/class.ts @@ -283,6 +283,44 @@ function isValidLanguageTag(language: string): boolean { } } `; + // Contexts are activated by expanded property IRIs left after compaction. + const extraContexts = Object.fromEntries( + Object.values(types).flatMap((type) => + type.properties.flatMap((property) => + property.extraContext == null + ? [] + : [[property.uri, property.extraContext]] + ) + ), + ); + if (Object.keys(extraContexts).length > 0) { + yield ` +const extraPropertyContexts: Readonly> = + ${JSON.stringify(extraContexts)}; + +function getExtraContexts(document: unknown): string[] { + const contexts = new Set(); + const pending: unknown[] = [document]; + while (pending.length > 0) { + const value = pending.pop(); + if (value == null || typeof value !== "object") continue; + if (Array.isArray(value)) { + for (const item of value) pending.push(item); + continue; + } + if ("@value" in value) continue; + for (const [key, child] of globalThis.Object.entries(value)) { + if (key === "@context") continue; + if (globalThis.Object.hasOwn(extraPropertyContexts, key)) { + contexts.add(extraPropertyContexts[key]); + } + pending.push(child); + } + } + return [...contexts]; +} +`; + } yield "\n\n"; const portableIriKeys = new Set(["@id", "id"]); for (const type of Object.values(types)) { diff --git a/packages/vocab-tools/src/codec.ts b/packages/vocab-tools/src/codec.ts index 1c40c1970..48ee93c50 100644 --- a/packages/vocab-tools/src/codec.ts +++ b/packages/vocab-tools/src/codec.ts @@ -265,13 +265,35 @@ export async function* generateEncoder( }, ); } - const docContext = options.context ?? + let docContext: Parameters[1] = options.context ?? ${JSON.stringify(type.defaultContext)}; - const compacted = await jsonld.compact( + let compacted = await jsonld.compact( values, docContext, { documentLoader: options.contextLoader }, ); + `; + if ( + Object.values(types).some((t) => + t.properties.some((p) => p.extraContext != null) + ) + ) { + yield ` + if (options.context == null) { + const currentContexts = Array.isArray(docContext) ? docContext : [docContext]; + const additionalContexts = getExtraContexts(compacted).filter( + context => !currentContexts.includes(context) + ); + if (additionalContexts.length > 0) { + docContext = [...currentContexts, ...additionalContexts]; + compacted = await jsonld.compact(values, docContext, { + documentLoader: options.contextLoader, + }); + } + } + `; + } + yield ` if (docContext != null) { // Embed context `; @@ -309,7 +331,10 @@ export async function* generateEncoder( protected ${emitOverride(typeUri, types)} isCompactable(): boolean { `; for (const property of type.properties) { - if (!property.range.every((r) => isCompactableType(r, types))) { + if ( + property.extraContext != null || + !property.range.every((r) => isCompactableType(r, types)) + ) { yield ` if ( this.${await getFieldName(property.uri)} != null && diff --git a/packages/vocab-tools/src/property.ts b/packages/vocab-tools/src/property.ts index 28bcbfbfb..720d330ff 100644 --- a/packages/vocab-tools/src/property.ts +++ b/packages/vocab-tools/src/property.ts @@ -29,6 +29,7 @@ async function* generateProperty( moduleVarNames: ReadonlyMap, ): AsyncIterable { const override = emitOverride(type.uri, types, property); + const trustOwner = type.trustEmbeddedObjects === false ? "null" : "this.id"; const doc = `\n/** ${property.description.replaceAll("\n", "\n * ")}\n */\n`; const cachedPropertyBaseUrl = `(options as { baseUrl?: URL }).baseUrl ?? this._baseUrl ?? @@ -277,7 +278,7 @@ async function* generateProperty( let v = this.${await getFieldName(property.uri)}[0]; if (!(v instanceof URL) && v.id != null && - !isTrustedIriOrigin(options, v.id, this.id) && + !isTrustedIriOrigin(options, v.id, ${trustOwner}) && !this.${await getFieldName(property.uri, "#_trust")}.has(0)) { v = v.id; } @@ -317,12 +318,18 @@ async function* generateProperty( } yield ` if (v?.id != null && - this.id != null && !isTrustedIriOrigin(options, v.id, this.id) && + ${ + type.trustEmbeddedObjects === false ? "" : "this.id != null && " + }!isTrustedIriOrigin(options, v.id, ${trustOwner}) && !this.${await getFieldName(property.uri, "#_trust")}.has(0)) { if (options.crossOrigin === "throw") { throw new Error( "The property object's @id (" + v.id.href + ") has a different " + - "origin than the property owner's @id (" + this.id.href + "); " + + "origin than the property owner's @id (" + ${ + type.trustEmbeddedObjects === false + ? '"untrusted metadata"' + : "this.id.href" + } + "); " + "refusing to return the object. If you want to bypass this " + "check and are aware of the security implications, set the " + 'crossOrigin option to "trust".' @@ -334,7 +341,11 @@ async function* generateProperty( "return the object. If you want to bypass this check and are " + "aware of the security implications, set the crossOrigin option " + 'to "trust".', - { objectId: v.id.href, parentObjectId: this.id.href }, + { objectId: v.id.href, parentObjectId: ${ + type.trustEmbeddedObjects === false + ? '"untrusted metadata"' + : "this.id.href" + } }, ); return null; } @@ -383,7 +394,7 @@ async function* generateProperty( let v = vs[i]; if (!(v instanceof URL) && v.id != null && - !isTrustedIriOrigin(options, v.id, this.id) && + !isTrustedIriOrigin(options, v.id, ${trustOwner}) && !this.${await getFieldName(property.uri, "#_trust")}.has(i)) { v = v.id; } @@ -424,12 +435,18 @@ async function* generateProperty( } yield ` if (v?.id != null && - this.id != null && !isTrustedIriOrigin(options, v.id, this.id) && + ${ + type.trustEmbeddedObjects === false ? "" : "this.id != null && " + }!isTrustedIriOrigin(options, v.id, ${trustOwner}) && !this.${await getFieldName(property.uri, "#_trust")}.has(i)) { if (options.crossOrigin === "throw") { throw new Error( "The property object's @id (" + v.id.href + ") has a different " + - "origin than the property owner's @id (" + this.id.href + "); " + + "origin than the property owner's @id (" + ${ + type.trustEmbeddedObjects === false + ? '"untrusted metadata"' + : "this.id.href" + } + "); " + "refusing to return the object. If you want to bypass this " + "check and are aware of the security implications, set the " + 'crossOrigin option to "trust".' @@ -441,7 +458,11 @@ async function* generateProperty( "return the object. If you want to bypass this check and are " + "aware of the security implications, set the crossOrigin " + 'option to "trust".', - { objectId: v.id.href, parentObjectId: this.id.href }, + { objectId: v.id.href, parentObjectId: ${ + type.trustEmbeddedObjects === false + ? '"untrusted metadata"' + : "this.id.href" + } }, ); continue; } diff --git a/packages/vocab-tools/src/schema.ts b/packages/vocab-tools/src/schema.ts index 089d5ebe2..c7ad29c89 100644 --- a/packages/vocab-tools/src/schema.ts +++ b/packages/vocab-tools/src/schema.ts @@ -47,6 +47,14 @@ export interface TypeSchema { */ entity: boolean; + /** + * Whether this type's id can establish same-origin trust for its own + * embedded entity-valued properties. Defaults to true. Set to false for + * metadata whose id does not identify an independently fetched resource. + * Locally constructed and explicitly trusted values remain trusted. + */ + trustEmbeddedObjects?: boolean; + /** * Whether the type omits `@type` in JSON-LD serialization. When `true`, * the generated `toJsonLd()` method will not emit `@type` (or `type` in @@ -77,6 +85,14 @@ export interface TypeSchema { } export interface PropertySchemaBase { + /** + * A context URL added to the default serialization context when this + * property's expanded IRI appears in the compacted document. Explicit + * caller contexts are unchanged. Populated properties with this option + * use the JSON-LD processor instead of compact serialization heuristics. + */ + extraContext?: string; + /** * The singular form of the property name. It is used as the name of the * generated property accessors. diff --git a/packages/vocab-tools/src/schema.yaml b/packages/vocab-tools/src/schema.yaml index f550d2fdc..c093b041c 100644 --- a/packages/vocab-tools/src/schema.yaml +++ b/packages/vocab-tools/src/schema.yaml @@ -72,6 +72,14 @@ $defs: property-base: type: object properties: + extraContext: + description: >- + A context URL added to default serialization when this property's + expanded IRI appears in the compacted document. Explicit caller + contexts are unchanged. Populated properties use the JSON-LD + processor instead of compact serialization heuristics. + type: string + format: uri singularName: description: >- The singular form of the property name. It is used as the name of the @@ -250,6 +258,13 @@ properties: The extended subtypes must have the consistent value of this flag. type: boolean + trustEmbeddedObjects: + description: >- + Whether this type's id establishes same-origin trust for its own + embedded entity-valued properties. Defaults to true. Set to false + for metadata ids that do not identify independently fetched resources. + Locally constructed and explicitly trusted values remain trusted. + type: boolean typeless: description: >- Whether the type omits @type in JSON-LD serialization. When true, diff --git a/packages/vocab/src/__snapshots__/vocab.test.ts.snap b/packages/vocab/src/__snapshots__/vocab.test.ts.snap index dd5966fac..e4c16f030 100644 --- a/packages/vocab/src/__snapshots__/vocab.test.ts.snap +++ b/packages/vocab/src/__snapshots__/vocab.test.ts.snap @@ -39,7 +39,8 @@ snapshot[`Deno.inspect(Emoji) [auto] 1`] = ` approvedBy: URL "https://example.com/", likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, - announceAuthorization: AnnounceAuthorization {} + announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ] }' `; @@ -82,7 +83,8 @@ snapshot[`Deno.inspect(Emoji) [auto] 2`] = ` approvedBy: URL "https://example.com/", likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", - announceAuthorization: URL "https://example.com/" + announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ] }' `; @@ -125,7 +127,8 @@ snapshot[`Deno.inspect(Emoji) [auto] 3`] = ` approvedBy: URL "https://example.com/", likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, - announceAuthorization: AnnounceAuthorization {} + announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ] }' `; @@ -169,6 +172,7 @@ snapshot[`Deno.inspect(ChatMessage) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], quote: Object {}, quoteUrl: URL "https://fedify.dev/", quoteAuthorization: QuoteAuthorization {} @@ -215,6 +219,7 @@ snapshot[`Deno.inspect(ChatMessage) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], quote: URL "https://example.com/", quoteUrl: URL "https://fedify.dev/", quoteAuthorization: URL "https://example.com/" @@ -261,6 +266,7 @@ snapshot[`Deno.inspect(ChatMessage) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], quote: Object {}, quoteUrl: URL "https://fedify.dev/", quoteAuthorization: QuoteAuthorization {} @@ -307,6 +313,7 @@ snapshot[`Deno.inspect(EmojiReact) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -356,6 +363,7 @@ snapshot[`Deno.inspect(EmojiReact) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -405,6 +413,7 @@ snapshot[`Deno.inspect(EmojiReact) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -484,6 +493,7 @@ snapshot[`Deno.inspect(AnnounceAuthorization) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -529,6 +539,7 @@ snapshot[`Deno.inspect(AnnounceAuthorization) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], interactingObject: URL "https://example.com/", interactionTarget: URL "https://example.com/" }' @@ -574,6 +585,7 @@ snapshot[`Deno.inspect(AnnounceAuthorization) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -619,6 +631,7 @@ snapshot[`Deno.inspect(AnnounceRequest) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -668,6 +681,7 @@ snapshot[`Deno.inspect(AnnounceRequest) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -717,6 +731,7 @@ snapshot[`Deno.inspect(AnnounceRequest) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -823,6 +838,7 @@ snapshot[`Deno.inspect(LikeAuthorization) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -868,6 +884,7 @@ snapshot[`Deno.inspect(LikeAuthorization) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], interactingObject: URL "https://example.com/", interactionTarget: URL "https://example.com/" }' @@ -913,6 +930,7 @@ snapshot[`Deno.inspect(LikeAuthorization) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -958,6 +976,7 @@ snapshot[`Deno.inspect(LikeRequest) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -1007,6 +1026,7 @@ snapshot[`Deno.inspect(LikeRequest) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -1056,6 +1076,7 @@ snapshot[`Deno.inspect(LikeRequest) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -1105,6 +1126,7 @@ snapshot[`Deno.inspect(ReplyAuthorization) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -1150,6 +1172,7 @@ snapshot[`Deno.inspect(ReplyAuthorization) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], interactingObject: URL "https://example.com/", interactionTarget: URL "https://example.com/" }' @@ -1195,6 +1218,7 @@ snapshot[`Deno.inspect(ReplyAuthorization) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -1240,6 +1264,7 @@ snapshot[`Deno.inspect(ReplyRequest) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -1289,6 +1314,7 @@ snapshot[`Deno.inspect(ReplyRequest) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -1338,6 +1364,7 @@ snapshot[`Deno.inspect(ReplyRequest) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -1387,6 +1414,7 @@ snapshot[`Deno.inspect(QuoteAuthorization) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -1432,6 +1460,7 @@ snapshot[`Deno.inspect(QuoteAuthorization) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], interactingObject: URL "https://example.com/", interactionTarget: URL "https://example.com/" }' @@ -1477,6 +1506,7 @@ snapshot[`Deno.inspect(QuoteAuthorization) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -1522,6 +1552,7 @@ snapshot[`Deno.inspect(QuoteRequest) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -1571,6 +1602,7 @@ snapshot[`Deno.inspect(QuoteRequest) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -1620,6 +1652,7 @@ snapshot[`Deno.inspect(QuoteRequest) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -1629,6 +1662,75 @@ snapshot[`Deno.inspect(QuoteRequest) [auto] 3`] = ` }' `; +snapshot[`Deno.inspect(Translation) [auto] 1`] = ` +'Translation { + id: URL "https://example.com/", + language: Locale [Intl.Locale] { + baseName: "en-Latn-US", + calendar: undefined, + caseFirst: undefined, + collation: undefined, + hourCycle: undefined, + language: "en", + numberingSystem: undefined, + numeric: false, + region: "US", + script: "Latn" + }, + translators: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], + original: URL "https://example.com/", + sourceUpdated: 2024-03-03T08:30:06.796196096Z, + basis: URL "https://example.com/", + urls: [ URL "https://example.com/", Link {} ] +}' +`; + +snapshot[`Deno.inspect(Translation) [auto] 2`] = ` +'Translation { + id: URL "https://example.com/", + language: Locale [Intl.Locale] { + baseName: "en-Latn-US", + calendar: undefined, + caseFirst: undefined, + collation: undefined, + hourCycle: undefined, + language: "en", + numberingSystem: undefined, + numeric: false, + region: "US", + script: "Latn" + }, + translator: URL "https://example.com/", + original: URL "https://example.com/", + sourceUpdated: 2024-03-03T08:30:06.796196096Z, + basis: URL "https://example.com/", + urls: [ URL "https://example.com/", Link {} ] +}' +`; + +snapshot[`Deno.inspect(Translation) [auto] 3`] = ` +'Translation { + id: URL "https://example.com/", + language: Locale [Intl.Locale] { + baseName: "en-Latn-US", + calendar: undefined, + caseFirst: undefined, + collation: undefined, + hourCycle: undefined, + language: "en", + numberingSystem: undefined, + numeric: false, + region: "US", + script: "Latn" + }, + translators: [ Application {}, Application {} ], + original: URL "https://example.com/", + sourceUpdated: 2024-03-03T08:30:06.796196096Z, + basis: URL "https://example.com/", + urls: [ URL "https://example.com/", URL "https://example.com/" ] +}' +`; + snapshot[`Deno.inspect(FeatureAuthorization) [auto] 1`] = ` 'FeatureAuthorization { id: URL "https://example.com/", @@ -1669,6 +1771,7 @@ snapshot[`Deno.inspect(FeatureAuthorization) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -1714,6 +1817,7 @@ snapshot[`Deno.inspect(FeatureAuthorization) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], interactingObject: URL "https://example.com/", interactionTarget: URL "https://example.com/" }' @@ -1759,6 +1863,7 @@ snapshot[`Deno.inspect(FeatureAuthorization) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], interactingObject: Object {}, interactionTarget: Object {} }' @@ -1804,6 +1909,7 @@ snapshot[`Deno.inspect(FeatureRequest) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -1853,6 +1959,7 @@ snapshot[`Deno.inspect(FeatureRequest) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -1902,6 +2009,7 @@ snapshot[`Deno.inspect(FeatureRequest) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -1951,6 +2059,7 @@ snapshot[`Deno.inspect(FeaturedCollection) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -2009,6 +2118,7 @@ snapshot[`Deno.inspect(FeaturedCollection) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], totalItems: 123, current: URL "https://example.com/", first: URL "https://example.com/", @@ -2067,6 +2177,7 @@ snapshot[`Deno.inspect(FeaturedCollection) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -2125,6 +2236,7 @@ snapshot[`Deno.inspect(FeaturedItem) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], featuredObject: Object {}, featureAuthorization: FeatureAuthorization {} }' @@ -2170,6 +2282,7 @@ snapshot[`Deno.inspect(FeaturedItem) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], featuredObject: URL "https://example.com/", featureAuthorization: URL "https://example.com/" }' @@ -2215,6 +2328,7 @@ snapshot[`Deno.inspect(FeaturedItem) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], featuredObject: Object {}, featureAuthorization: FeatureAuthorization {} }' @@ -2428,6 +2542,7 @@ snapshot[`Deno.inspect(Agreement) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], stipulates: Commitment {}, stipulatesReciprocal: Commitment {} }' @@ -2473,6 +2588,7 @@ snapshot[`Deno.inspect(Agreement) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], stipulates: Commitment {}, stipulatesReciprocal: Commitment {} }' @@ -2518,6 +2634,7 @@ snapshot[`Deno.inspect(Agreement) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], stipulates: Commitment {}, stipulatesReciprocal: Commitment {} }' @@ -2620,6 +2737,7 @@ snapshot[`Deno.inspect(Proposal) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], purpose: "hello", publishes: Intent {}, reciprocal: Intent {}, @@ -2667,6 +2785,7 @@ snapshot[`Deno.inspect(Proposal) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], purpose: "hello", publishes: Intent {}, reciprocal: Intent {}, @@ -2714,6 +2833,7 @@ snapshot[`Deno.inspect(Proposal) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], purpose: "hello", publishes: Intent {}, reciprocal: Intent {}, @@ -2761,6 +2881,7 @@ snapshot[`Deno.inspect(Accept) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -2810,6 +2931,7 @@ snapshot[`Deno.inspect(Accept) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -2859,6 +2981,7 @@ snapshot[`Deno.inspect(Accept) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -2908,6 +3031,7 @@ snapshot[`Deno.inspect(Activity) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -2957,6 +3081,7 @@ snapshot[`Deno.inspect(Activity) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -3006,6 +3131,7 @@ snapshot[`Deno.inspect(Activity) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -3055,6 +3181,7 @@ snapshot[`Deno.inspect(Add) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -3104,6 +3231,7 @@ snapshot[`Deno.inspect(Add) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -3153,6 +3281,7 @@ snapshot[`Deno.inspect(Add) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -3202,6 +3331,7 @@ snapshot[`Deno.inspect(Announce) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -3251,6 +3381,7 @@ snapshot[`Deno.inspect(Announce) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -3300,6 +3431,7 @@ snapshot[`Deno.inspect(Announce) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -3349,6 +3481,7 @@ snapshot[`Deno.inspect(Application) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: CryptographicKey {}, assertionMethod: Multikey {}, @@ -3416,6 +3549,7 @@ snapshot[`Deno.inspect(Application) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: URL "https://example.com/", assertionMethod: URL "https://example.com/", @@ -3483,6 +3617,7 @@ snapshot[`Deno.inspect(Application) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKeys: [ CryptographicKey {}, CryptographicKey {} ], assertionMethods: [ Multikey {}, Multikey {} ], @@ -3550,6 +3685,7 @@ snapshot[`Deno.inspect(Arrive) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -3599,6 +3735,7 @@ snapshot[`Deno.inspect(Arrive) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -3648,6 +3785,7 @@ snapshot[`Deno.inspect(Arrive) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -3697,6 +3835,7 @@ snapshot[`Deno.inspect(Article) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], quote: Object {}, quoteUrl: URL "https://fedify.dev/", quoteAuthorization: QuoteAuthorization {} @@ -3743,6 +3882,7 @@ snapshot[`Deno.inspect(Article) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], quote: URL "https://example.com/", quoteUrl: URL "https://fedify.dev/", quoteAuthorization: URL "https://example.com/" @@ -3789,6 +3929,7 @@ snapshot[`Deno.inspect(Article) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], quote: Object {}, quoteUrl: URL "https://fedify.dev/", quoteAuthorization: QuoteAuthorization {} @@ -3835,6 +3976,7 @@ snapshot[`Deno.inspect(Audio) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -3881,6 +4023,7 @@ snapshot[`Deno.inspect(Audio) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -3927,6 +4070,7 @@ snapshot[`Deno.inspect(Audio) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -3973,6 +4117,7 @@ snapshot[`Deno.inspect(Block) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -4022,6 +4167,7 @@ snapshot[`Deno.inspect(Block) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -4071,6 +4217,7 @@ snapshot[`Deno.inspect(Block) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -4120,6 +4267,7 @@ snapshot[`Deno.inspect(Collection) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -4176,6 +4324,7 @@ snapshot[`Deno.inspect(Collection) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], totalItems: 123, current: URL "https://example.com/", first: URL "https://example.com/", @@ -4232,6 +4381,7 @@ snapshot[`Deno.inspect(Collection) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -4288,6 +4438,7 @@ snapshot[`Deno.inspect(CollectionPage) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -4347,6 +4498,7 @@ snapshot[`Deno.inspect(CollectionPage) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], totalItems: 123, current: URL "https://example.com/", first: URL "https://example.com/", @@ -4406,6 +4558,7 @@ snapshot[`Deno.inspect(CollectionPage) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -4465,6 +4618,7 @@ snapshot[`Deno.inspect(Create) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -4514,6 +4668,7 @@ snapshot[`Deno.inspect(Create) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -4563,6 +4718,7 @@ snapshot[`Deno.inspect(Create) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -4612,6 +4768,7 @@ snapshot[`Deno.inspect(Delete) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -4661,6 +4818,7 @@ snapshot[`Deno.inspect(Delete) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -4710,6 +4868,7 @@ snapshot[`Deno.inspect(Delete) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -4759,6 +4918,7 @@ snapshot[`Deno.inspect(Dislike) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -4808,6 +4968,7 @@ snapshot[`Deno.inspect(Dislike) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -4857,6 +5018,7 @@ snapshot[`Deno.inspect(Dislike) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -4906,6 +5068,7 @@ snapshot[`Deno.inspect(Document) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -4952,6 +5115,7 @@ snapshot[`Deno.inspect(Document) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -4998,6 +5162,7 @@ snapshot[`Deno.inspect(Document) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -5082,7 +5247,8 @@ snapshot[`Deno.inspect(Event) [auto] 1`] = ` approvedBy: URL "https://example.com/", likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, - announceAuthorization: AnnounceAuthorization {} + announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ] }' `; @@ -5125,7 +5291,8 @@ snapshot[`Deno.inspect(Event) [auto] 2`] = ` approvedBy: URL "https://example.com/", likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", - announceAuthorization: URL "https://example.com/" + announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ] }' `; @@ -5168,7 +5335,8 @@ snapshot[`Deno.inspect(Event) [auto] 3`] = ` approvedBy: URL "https://example.com/", likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, - announceAuthorization: AnnounceAuthorization {} + announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ] }' `; @@ -5212,6 +5380,7 @@ snapshot[`Deno.inspect(Flag) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -5261,6 +5430,7 @@ snapshot[`Deno.inspect(Flag) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -5310,6 +5480,7 @@ snapshot[`Deno.inspect(Flag) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -5359,6 +5530,7 @@ snapshot[`Deno.inspect(Follow) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -5408,6 +5580,7 @@ snapshot[`Deno.inspect(Follow) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -5457,6 +5630,7 @@ snapshot[`Deno.inspect(Follow) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -5506,6 +5680,7 @@ snapshot[`Deno.inspect(Group) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: CryptographicKey {}, assertionMethod: Multikey {}, @@ -5573,6 +5748,7 @@ snapshot[`Deno.inspect(Group) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: URL "https://example.com/", assertionMethod: URL "https://example.com/", @@ -5640,6 +5816,7 @@ snapshot[`Deno.inspect(Group) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKeys: [ CryptographicKey {}, CryptographicKey {} ], assertionMethods: [ Multikey {}, Multikey {} ], @@ -5785,6 +5962,7 @@ snapshot[`Deno.inspect(Ignore) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -5834,6 +6012,7 @@ snapshot[`Deno.inspect(Ignore) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -5883,6 +6062,7 @@ snapshot[`Deno.inspect(Ignore) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -5932,6 +6112,7 @@ snapshot[`Deno.inspect(Image) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -5978,6 +6159,7 @@ snapshot[`Deno.inspect(Image) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -6024,6 +6206,7 @@ snapshot[`Deno.inspect(Image) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -6070,6 +6253,7 @@ snapshot[`Deno.inspect(IntransitiveActivity) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -6119,6 +6303,7 @@ snapshot[`Deno.inspect(IntransitiveActivity) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -6168,6 +6353,7 @@ snapshot[`Deno.inspect(IntransitiveActivity) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -6217,6 +6403,7 @@ snapshot[`Deno.inspect(Invite) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -6266,6 +6453,7 @@ snapshot[`Deno.inspect(Invite) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -6315,6 +6503,7 @@ snapshot[`Deno.inspect(Invite) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -6364,6 +6553,7 @@ snapshot[`Deno.inspect(Join) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -6413,6 +6603,7 @@ snapshot[`Deno.inspect(Join) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -6462,6 +6653,7 @@ snapshot[`Deno.inspect(Join) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -6511,6 +6703,7 @@ snapshot[`Deno.inspect(Leave) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -6560,6 +6753,7 @@ snapshot[`Deno.inspect(Leave) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -6609,6 +6803,7 @@ snapshot[`Deno.inspect(Leave) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -6658,6 +6853,7 @@ snapshot[`Deno.inspect(Like) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -6707,6 +6903,7 @@ snapshot[`Deno.inspect(Like) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -6756,6 +6953,7 @@ snapshot[`Deno.inspect(Like) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -6883,6 +7081,7 @@ snapshot[`Deno.inspect(Listen) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -6932,6 +7131,7 @@ snapshot[`Deno.inspect(Listen) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -6981,6 +7181,7 @@ snapshot[`Deno.inspect(Listen) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -7108,6 +7309,7 @@ snapshot[`Deno.inspect(Move) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -7157,6 +7359,7 @@ snapshot[`Deno.inspect(Move) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -7206,6 +7409,7 @@ snapshot[`Deno.inspect(Move) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -7255,6 +7459,7 @@ snapshot[`Deno.inspect(Note) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], quote: Object {}, quoteUrl: URL "https://fedify.dev/", quoteAuthorization: QuoteAuthorization {} @@ -7301,6 +7506,7 @@ snapshot[`Deno.inspect(Note) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], quote: URL "https://example.com/", quoteUrl: URL "https://fedify.dev/", quoteAuthorization: URL "https://example.com/" @@ -7347,6 +7553,7 @@ snapshot[`Deno.inspect(Note) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], quote: Object {}, quoteUrl: URL "https://fedify.dev/", quoteAuthorization: QuoteAuthorization {} @@ -7392,7 +7599,8 @@ snapshot[`Deno.inspect(Object) [auto] 1`] = ` approvedBy: URL "https://example.com/", likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, - announceAuthorization: AnnounceAuthorization {} + announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ] }' `; @@ -7435,7 +7643,8 @@ snapshot[`Deno.inspect(Object) [auto] 2`] = ` approvedBy: URL "https://example.com/", likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", - announceAuthorization: URL "https://example.com/" + announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ] }' `; @@ -7478,7 +7687,8 @@ snapshot[`Deno.inspect(Object) [auto] 3`] = ` approvedBy: URL "https://example.com/", likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, - announceAuthorization: AnnounceAuthorization {} + announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ] }' `; @@ -7522,6 +7732,7 @@ snapshot[`Deno.inspect(Offer) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -7571,6 +7782,7 @@ snapshot[`Deno.inspect(Offer) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -7620,6 +7832,7 @@ snapshot[`Deno.inspect(Offer) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -7669,6 +7882,7 @@ snapshot[`Deno.inspect(OrderedCollection) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -7725,6 +7939,7 @@ snapshot[`Deno.inspect(OrderedCollection) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], totalItems: 123, current: URL "https://example.com/", first: URL "https://example.com/", @@ -7781,6 +7996,7 @@ snapshot[`Deno.inspect(OrderedCollection) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -7837,6 +8053,7 @@ snapshot[`Deno.inspect(OrderedCollectionPage) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -7897,6 +8114,7 @@ snapshot[`Deno.inspect(OrderedCollectionPage) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], totalItems: 123, current: URL "https://example.com/", first: URL "https://example.com/", @@ -7957,6 +8175,7 @@ snapshot[`Deno.inspect(OrderedCollectionPage) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], totalItems: 123, current: CollectionPage {}, first: CollectionPage {}, @@ -8017,6 +8236,7 @@ snapshot[`Deno.inspect(Organization) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: CryptographicKey {}, assertionMethod: Multikey {}, @@ -8084,6 +8304,7 @@ snapshot[`Deno.inspect(Organization) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: URL "https://example.com/", assertionMethod: URL "https://example.com/", @@ -8151,6 +8372,7 @@ snapshot[`Deno.inspect(Organization) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKeys: [ CryptographicKey {}, CryptographicKey {} ], assertionMethods: [ Multikey {}, Multikey {} ], @@ -8218,6 +8440,7 @@ snapshot[`Deno.inspect(Page) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -8264,6 +8487,7 @@ snapshot[`Deno.inspect(Page) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -8310,6 +8534,7 @@ snapshot[`Deno.inspect(Page) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -8356,6 +8581,7 @@ snapshot[`Deno.inspect(Person) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: CryptographicKey {}, assertionMethod: Multikey {}, @@ -8423,6 +8649,7 @@ snapshot[`Deno.inspect(Person) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: URL "https://example.com/", assertionMethod: URL "https://example.com/", @@ -8490,6 +8717,7 @@ snapshot[`Deno.inspect(Person) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKeys: [ CryptographicKey {}, CryptographicKey {} ], assertionMethods: [ Multikey {}, Multikey {} ], @@ -8557,6 +8785,7 @@ snapshot[`Deno.inspect(Place) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], accuracy: 12.34, altitude: 12.34, latitude: 12.34, @@ -8606,6 +8835,7 @@ snapshot[`Deno.inspect(Place) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], accuracy: 12.34, altitude: 12.34, latitude: 12.34, @@ -8655,6 +8885,7 @@ snapshot[`Deno.inspect(Place) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], accuracy: 12.34, altitude: 12.34, latitude: 12.34, @@ -8704,6 +8935,7 @@ snapshot[`Deno.inspect(Profile) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], describes: Object {} }' `; @@ -8748,6 +8980,7 @@ snapshot[`Deno.inspect(Profile) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], describes: URL "https://example.com/" }' `; @@ -8792,6 +9025,7 @@ snapshot[`Deno.inspect(Profile) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], describes: Object {} }' `; @@ -8836,6 +9070,7 @@ snapshot[`Deno.inspect(Question) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -8892,6 +9127,7 @@ snapshot[`Deno.inspect(Question) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -8948,6 +9184,7 @@ snapshot[`Deno.inspect(Question) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -9004,6 +9241,7 @@ snapshot[`Deno.inspect(Read) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -9053,6 +9291,7 @@ snapshot[`Deno.inspect(Read) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -9102,6 +9341,7 @@ snapshot[`Deno.inspect(Read) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -9151,6 +9391,7 @@ snapshot[`Deno.inspect(Reject) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -9200,6 +9441,7 @@ snapshot[`Deno.inspect(Reject) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -9249,6 +9491,7 @@ snapshot[`Deno.inspect(Reject) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -9298,6 +9541,7 @@ snapshot[`Deno.inspect(Relationship) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], subject: Object {}, object: Object {}, relationship: Object {} @@ -9344,6 +9588,7 @@ snapshot[`Deno.inspect(Relationship) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], subject: URL "https://example.com/", object: URL "https://example.com/", relationship: URL "https://example.com/" @@ -9390,6 +9635,7 @@ snapshot[`Deno.inspect(Relationship) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], subject: Object {}, objects: [ Object {}, Object {} ], relationships: [ Object {}, Object {} ] @@ -9436,6 +9682,7 @@ snapshot[`Deno.inspect(Remove) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -9485,6 +9732,7 @@ snapshot[`Deno.inspect(Remove) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -9534,6 +9782,7 @@ snapshot[`Deno.inspect(Remove) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -9583,6 +9832,7 @@ snapshot[`Deno.inspect(Service) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: CryptographicKey {}, assertionMethod: Multikey {}, @@ -9650,6 +9900,7 @@ snapshot[`Deno.inspect(Service) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKey: URL "https://example.com/", assertionMethod: URL "https://example.com/", @@ -9717,6 +9968,7 @@ snapshot[`Deno.inspect(Service) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], preferredUsernames: [ "hello", "hello" ], publicKeys: [ CryptographicKey {}, CryptographicKey {} ], assertionMethods: [ Multikey {}, Multikey {} ], @@ -9808,6 +10060,7 @@ snapshot[`Deno.inspect(TentativeAccept) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -9857,6 +10110,7 @@ snapshot[`Deno.inspect(TentativeAccept) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -9906,6 +10160,7 @@ snapshot[`Deno.inspect(TentativeAccept) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -9955,6 +10210,7 @@ snapshot[`Deno.inspect(TentativeReject) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -10004,6 +10260,7 @@ snapshot[`Deno.inspect(TentativeReject) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -10053,6 +10310,7 @@ snapshot[`Deno.inspect(TentativeReject) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -10102,6 +10360,7 @@ snapshot[`Deno.inspect(Tombstone) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], formerType: [class Person extends Object], deleted: 2024-03-03T08:30:06.796196096Z }' @@ -10147,6 +10406,7 @@ snapshot[`Deno.inspect(Tombstone) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], formerType: [class Person extends Object], deleted: 2024-03-03T08:30:06.796196096Z }' @@ -10192,6 +10452,7 @@ snapshot[`Deno.inspect(Tombstone) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], formerTypes: [ [class Person extends Object], [class Person extends Object] ], deleted: 2024-03-03T08:30:06.796196096Z }' @@ -10237,6 +10498,7 @@ snapshot[`Deno.inspect(Travel) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -10286,6 +10548,7 @@ snapshot[`Deno.inspect(Travel) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -10335,6 +10598,7 @@ snapshot[`Deno.inspect(Travel) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -10384,6 +10648,7 @@ snapshot[`Deno.inspect(Undo) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -10433,6 +10698,7 @@ snapshot[`Deno.inspect(Undo) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -10482,6 +10748,7 @@ snapshot[`Deno.inspect(Undo) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -10531,6 +10798,7 @@ snapshot[`Deno.inspect(Update) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -10580,6 +10848,7 @@ snapshot[`Deno.inspect(Update) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -10629,6 +10898,7 @@ snapshot[`Deno.inspect(Update) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], @@ -10678,6 +10948,7 @@ snapshot[`Deno.inspect(Video) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -10724,6 +10995,7 @@ snapshot[`Deno.inspect(Video) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -10770,6 +11042,7 @@ snapshot[`Deno.inspect(Video) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], width: 123, height: 123, digestMultibase: "hello" @@ -10816,6 +11089,7 @@ snapshot[`Deno.inspect(View) [auto] 1`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {} ], actors: [ Application {}, Group {}, Organization {}, Person {}, Service {} ], object: Object {}, target: Object {}, @@ -10865,6 +11139,7 @@ snapshot[`Deno.inspect(View) [auto] 2`] = ` likeAuthorization: URL "https://example.com/", replyAuthorization: URL "https://example.com/", announceAuthorization: URL "https://example.com/", + translations: [ Translation {} ], actor: URL "https://example.com/", object: URL "https://example.com/", target: URL "https://example.com/", @@ -10914,6 +11189,7 @@ snapshot[`Deno.inspect(View) [auto] 3`] = ` likeAuthorization: LikeAuthorization {}, replyAuthorization: ReplyAuthorization {}, announceAuthorization: AnnounceAuthorization {}, + translations: [ Translation {}, Translation {} ], actors: [ Application {}, Application {} ], objects: [ Object {}, Object {} ], targets: [ Object {}, Object {} ], diff --git a/packages/vocab/src/object.yaml b/packages/vocab/src/object.yaml index d9382b9c3..eb8a1e59b 100644 --- a/packages/vocab/src/object.yaml +++ b/packages/vocab/src/object.yaml @@ -469,3 +469,18 @@ properties: (boost) was approved by the target post's author. range: - "https://gotosocial.org/ns#AnnounceAuthorization" + +- pluralName: translations + singularName: translation + compactName: translations + uri: "https://w3id.org/fep/22cd#translations" + extraContext: "https://w3id.org/fep/22cd" + description: | + Translation metadata for the language versions in this object's content, + name, or summary maps, as defined by the draft + [FEP-22cd](https://w3id.org/fep/22cd). Each entry describes one translated + language; directly authored languages have no entry. The entries share + this object's identity, replies, and reactions. Translator credit grants + no authority to update the object. + range: + - "https://w3id.org/fep/22cd#Translation" diff --git a/packages/vocab/src/translation.test.ts b/packages/vocab/src/translation.test.ts new file mode 100644 index 000000000..5b80138f1 --- /dev/null +++ b/packages/vocab/src/translation.test.ts @@ -0,0 +1,515 @@ +import { test } from "@fedify/fixture"; +import { + type DocumentLoader, + getDocumentLoader, + preloadedContexts, +} from "@fedify/vocab-runtime"; +import { deepStrictEqual, ok, rejects } from "node:assert/strict"; +import { + Application, + Article, + Collection, + Create, + Group, + LanguageString, + Link, + Note, + Object as ASObject, + Organization, + Person, + PropertyValue, + Service, + Translation, + Update, +} from "./mod.ts"; + +// FEP-22cd draft and examples, pinned to: +// https://codeberg.org/fediverse/fep/src/commit/6d0d6559054baeb7b71a5f2bdc14fc4c09b66f39/fep/22cd/fep-22cd.md +const AS = "https://www.w3.org/ns/activitystreams"; +const FEP = "https://w3id.org/fep/22cd"; +const SCHEMA = "https://schema.org/"; +const articleId = new URL("https://example.com/articles/1"); +const alice = new URL("https://example.com/users/alice"); +const context = [AS, FEP]; +const sourceUpdated = Temporal.Instant.from("2026-09-01T00:00:00Z"); +const entry = { + type: "Translation", + inLanguage: "ko", + url: "https://example.com/articles/1/ko", + translator: [alice.href], + translationOfWork: articleId.href, + sourceUpdated: sourceUpdated.toString(), +}; +const example = { + "@context": context, + id: articleId.href, + type: "Article", + attributedTo: alice.href, + updated: sourceUpdated.toString(), + contentMap: { en: "

Original text...

", ko: "

번역 텍스트...

" }, + translations: [entry], +}; + +function translation(): Translation { + return new Translation({ + language: new Intl.Locale("ko"), + translator: alice, + original: articleId, + sourceUpdated, + url: new URL(entry.url), + }); +} + +function article(): Article { + return new Article({ + id: articleId, + attribution: alice, + updated: sourceUpdated, + contents: [ + new LanguageString(example.contentMap.en, "en"), + new LanguageString(example.contentMap.ko, "ko"), + ], + translations: [translation()], + }); +} + +function record(value: unknown): Record { + ok(value != null && typeof value === "object" && !Array.isArray(value)); + return value as Record; +} + +const noFetch: DocumentLoader = (url) => { + throw new Error(`Unexpected fetch: ${url}`); +}; + +function actorLoader(type: string, id?: string): DocumentLoader { + return (url) => + Promise.resolve({ + contextUrl: null, + documentUrl: url, + document: { "@context": AS, type, id: id ?? url }, + }); +} + +test("FEP-22cd canonical context is preloaded", async () => { + ok(FEP in preloadedContexts); + const loaded = await getDocumentLoader()(FEP); + deepStrictEqual(record(loaded.document)["@context"], { + "fep-22cd": `${FEP}#`, + schema: SCHEMA, + xsd: "http://www.w3.org/2001/XMLSchema#", + translations: { "@id": "fep-22cd:translations", "@container": "@set" }, + Translation: "fep-22cd:Translation", + sourceUpdated: { "@id": "fep-22cd:sourceUpdated", "@type": "xsd:dateTime" }, + translator: { + "@id": "schema:translator", + "@type": "@id", + "@container": "@set", + }, + inLanguage: "schema:inLanguage", + translationOfWork: { "@id": "schema:translationOfWork", "@type": "@id" }, + isBasedOn: { "@id": "schema:isBasedOn", "@type": "@id" }, + }); +}); + +test("FEP-22cd personal translation compact and expanded round trips", async () => { + for (const format of [undefined, "compact", "expand"] as const) { + const encoded = await article().toJsonLd({ format }); + if (format !== "expand") { + deepStrictEqual(record(encoded).translations, [entry]); + ok((record(encoded)["@context"] as unknown[]).includes(FEP)); + } + const restored = await Article.fromJsonLd(encoded, { + documentLoader: noFetch, + }); + deepStrictEqual(restored.attributionId, alice); + deepStrictEqual(restored.contents, article().contents); + deepStrictEqual(restored.translations.length, 1); + const t = restored.translations[0]; + deepStrictEqual(t.language?.baseName, "ko"); + deepStrictEqual(t.original, articleId); + deepStrictEqual(t.translatorIds, [alice]); + deepStrictEqual(t.sourceUpdated?.toString(), sourceUpdated.toString()); + deepStrictEqual(t.url, new URL(entry.url)); + // Explicit compact bypasses the input cache. + deepStrictEqual( + record(await restored.toJsonLd({ format: "compact" })).translations, + [entry], + ); + } + const restored = await Article.fromJsonLd(example, { + documentLoader: noFetch, + }); + deepStrictEqual( + record(await restored.toJsonLd({ format: "compact", context })) + .translations, + [entry], + ); + deepStrictEqual( + await article().toJsonLd({ format: "compact", context }), + example, + ); +}); + +test("FEP-22cd full IRIs, optional revision, script language and AS links", async () => { + const expanded = { + "@type": `${FEP}#Translation`, + [`${SCHEMA}inLanguage`]: "zh-Hant", + [`${SCHEMA}translator`]: [{ "@id": alice.href }], + [`${SCHEMA}translationOfWork`]: { "@id": articleId.href }, + [`${SCHEMA}isBasedOn`]: { "@id": `${articleId.href}/revisions/2` }, + [`${AS}#url`]: [ + { "@id": `${articleId.href}/zh-Hant` }, + { + "@type": `${AS}#Link`, + [`${AS}#href`]: { "@id": `${articleId.href}/zh-Hant.html` }, + }, + ], + }; + const t = await Translation.fromJsonLd(expanded, { documentLoader: noFetch }); + deepStrictEqual(t.language?.baseName, "zh-Hant"); + deepStrictEqual(t.original, articleId); + deepStrictEqual(t.basis?.href, `${articleId.href}/revisions/2`); + deepStrictEqual(t.sourceUpdated, null); + ok(t.urls[1] instanceof Link); + const compact = record(await t.toJsonLd({ format: "compact" })); + deepStrictEqual(compact.translator, [alice.href]); + deepStrictEqual(compact.inLanguage, "zh-Hant"); + deepStrictEqual(compact.isBasedOn, `${articleId.href}/revisions/2`); + ok(!("sourceUpdated" in compact)); + ok(Object.keys(compact).every((key) => !key.startsWith("https:"))); +}); + +test("FEP-22cd organization languages, multiple translators and review-only Update", async () => { + const initial = article().clone({ + attribution: new URL("https://example.com/orgs/acme"), + names: [ + new LanguageString("Title", "en"), + new LanguageString("제목", "ko"), + ], + summaries: [ + new LanguageString("Summary", "en"), + new LanguageString("요약", "ko"), + ], + contents: [ + ...article().contents, + new LanguageString("日本語版", "ja"), + "Fallback", + ], + translations: [ + translation(), + new Translation({ + language: new Intl.Locale("ja"), + translators: [ + new URL("https://example.com/users/bob"), + new URL("https://example.com/actors/translator"), + ], + original: articleId, + }), + ], + }); + const editedAt = Temporal.Instant.from("2026-09-15T00:00:00Z"); + const edited = initial.clone({ updated: editedAt }); + ok( + Temporal.Instant.compare( + edited.translations[0].sourceUpdated!, + edited.updated!, + ) < 0, + ); + const reviewed = edited.clone({ + translations: [ + edited.translations[0].clone({ sourceUpdated: edited.updated }), + edited.translations[1], + ], + }); + const update = new Update({ + id: new URL(`${articleId.href}/review`), + actor: alice, + object: reviewed, + }); + const restored = await Update.fromJsonLd( + await update.toJsonLd({ format: "compact" }), + { documentLoader: noFetch }, + ); + const object = await restored.getObject(); + ok(object instanceof Article); + deepStrictEqual(object.id, articleId); + const byLanguage = (values: readonly (string | LanguageString)[]) => + Object.fromEntries(values.map((value) => [ + value instanceof LanguageString ? value.locale.baseName : "@none", + value.toString(), + ])); + deepStrictEqual(byLanguage(object.contents), byLanguage(initial.contents)); + deepStrictEqual(object.names, initial.names); + deepStrictEqual(object.summaries, initial.summaries); + deepStrictEqual(object.attributionId, initial.attributionId); + deepStrictEqual(object.translations.map((t) => t.language?.baseName), [ + "ko", + "ja", + ]); + deepStrictEqual( + object.translations[0].sourceUpdated?.toString(), + editedAt.toString(), + ); + deepStrictEqual(object.translations[1].sourceUpdated, null); + deepStrictEqual( + object.translations[1].translatorIds, + initial.translations[1].translatorIds, + ); + const withdrawn = reviewed.clone({ + translations: [], + contents: [new LanguageString("Original", "en")], + }); + const replaced = await Article.fromJsonLd(await withdrawn.toJsonLd()); + deepStrictEqual(replaced.translations, []); + deepStrictEqual(replaced.id, articleId); +}); + +test("FEP-22cd nested fresh and cached objects compact without full-IRI terms", async () => { + for (const child of [article(), await Article.fromJsonLd(example)]) { + for ( + const wrapper of [ + new Create({ object: child }), + new Collection({ items: [child] }), + ] + ) { + for (const format of [undefined, "compact"] as const) { + const json = record(await wrapper.toJsonLd({ format })); + const nested = record(json.object ?? json.items); + deepStrictEqual(nested.translations, [entry]); + const roundTrip = await ASObject.fromJsonLd(json); + ok(roundTrip instanceof Create || roundTrip instanceof Collection); + } + } + } + const custom = record( + await article().toJsonLd({ format: "compact", context: AS }), + ); + deepStrictEqual(custom["@context"], AS); + ok(`${FEP}#translations` in custom); +}); + +test("FEP-22cd all actor types use the existing linked-object getters", async () => { + for (const Type of [Person, Organization, Group, Application, Service]) { + const t = new Translation({ translator: new Type({ id: alice }) }); + ok(await t.getTranslator({ documentLoader: noFetch }) instanceof Type); + const parsed = await Translation.fromJsonLd(await t.toJsonLd()); + ok( + await parsed.getTranslator({ + documentLoader: actorLoader(Type.name), + }) instanceof Type, + ); + deepStrictEqual((await Array.fromAsync(parsed.getTranslators())).length, 1); + } +}); + +test("FEP-22cd metadata ids are not fetched or trusted as actor origins", async () => { + for (const id of [undefined, "https://victim.example/metadata"]) { + for (const plural of [false, true]) { + const t = await Translation.fromJsonLd({ + "@context": context, + type: "Translation", + ...(id == null ? {} : { id }), + translator: [{ + id: "https://victim.example/actor", + type: "Application", + }], + }); + const fetched: string[] = []; + const documentLoader: DocumentLoader = (url) => { + fetched.push(url); + return actorLoader("Person")(url); + }; + const actors = plural + ? await Array.fromAsync(t.getTranslators({ documentLoader })) + : [await t.getTranslator({ documentLoader })]; + deepStrictEqual(fetched, ["https://victim.example/actor"]); + ok(actors[0] instanceof Person); + deepStrictEqual(t.id?.href, id); + } + } + const parsed = await Article.fromJsonLd({ + ...example, + translations: [{ ...entry, id: "urn:translation:ko" }], + }, { documentLoader: noFetch }); + deepStrictEqual(parsed.translations[0].id?.href, "urn:translation:ko"); + await parsed.toJsonLd({ format: "compact" }); +}); + +// Mirrors the documentation's completeness check before classifying credit. +async function hasCompleteCredit( + t: Translation, + documentLoader: DocumentLoader, +): Promise { + const ids = t.translatorIds; + const actors = await Array.fromAsync( + t.getTranslators({ documentLoader, suppressError: true }), + ); + return actors.length > 0 && actors.length >= ids.length && + actors.every((actor) => actor.id != null); +} + +test("FEP-22cd unavailable, deleted, mismatched and id-less actors leave status unknown", async () => { + for ( + const failedLoader of [ + noFetch, + actorLoader("Tombstone"), + actorLoader("Person", "https://spoof.example/actor"), + ] + ) { + const t = new Translation({ + translators: [ + alice, + new Application({ id: new URL("https://example.com/machine") }), + ], + }); + deepStrictEqual(await hasCompleteCredit(t, failedLoader), false); + deepStrictEqual(t.translatorIds, [ + alice, + new URL("https://example.com/machine"), + ]); + deepStrictEqual( + record(await t.toJsonLd({ format: "compact" })).translator instanceof + Array, + true, + ); + } + const idless = await Translation.fromJsonLd({ + "@context": context, + type: "Translation", + translator: [alice.href, { type: "Application" }], + }); + deepStrictEqual( + await hasCompleteCredit(idless, actorLoader("Person")), + false, + ); + await rejects( + () => + new Translation({ translator: alice }).getTranslator({ + documentLoader: noFetch, + }), + /Unexpected fetch/, + ); + const t = new Translation({ translator: alice }); + await rejects(() => + t.getTranslator({ + documentLoader: actorLoader("Person", "https://spoof.example/actor"), + crossOrigin: "throw", + }) + ); +}); + +test("FEP-22cd malformed metadata follows vocabulary parsing behavior", async () => { + await rejects( + () => + Article.fromJsonLd({ + ...example, + translations: [{ ...entry, inLanguage: "not_a_language" }], + }), + RangeError, + ); + await rejects( + () => + Article.fromJsonLd({ + ...example, + translations: [{ ...entry, sourceUpdated: "2026-09-01" }], + }), + RangeError, + ); + await rejects( + () => + Article.fromJsonLd({ + ...example, + translations: [{ ...entry, type: "Note" }], + }), + TypeError, + ); + // As with other value types, required FEP fields are not enforced by the parser. + const idOnly = await Article.fromJsonLd({ + ...example, + translations: [{ id: "urn:translation:ko" }], + }, { documentLoader: noFetch }); + deepStrictEqual(idOnly.translations[0].id?.href, "urn:translation:ko"); + deepStrictEqual(idOnly.translations[0].language, null); + deepStrictEqual(idOnly.translations[0].translatorIds, []); + const missing = await Article.fromJsonLd({ + ...example, + translations: undefined, + }); + deepStrictEqual(missing.translations, []); +}); + +test("FEP-22cd ordinary multilingual serialization remains unchanged", async () => { + const fields = { + id: articleId, + attribution: alice, + contents: [ + "Fallback", + new LanguageString("Original", "en"), + new LanguageString("번역", "ko"), + ], + names: [ + new LanguageString("Title", "en"), + new LanguageString("제목", "ko"), + ], + }; + for (const Type of [Article, Note, ASObject]) { + for (const format of [undefined, "compact"] as const) { + const json = record(await new Type(fields).toJsonLd({ format })); + ok(!JSON.stringify(json["@context"]).includes(FEP)); + deepStrictEqual(json.contentMap, { en: "Original", ko: "번역" }); + deepStrictEqual(json.content, "Fallback"); + deepStrictEqual(json.nameMap, { en: "Title", ko: "제목" }); + deepStrictEqual(json.attributedTo, alice.href); + ok(!("translations" in json)); + } + } +}); + +test("FEP-22cd keeps Mastodon PropertyValue and Schema.org translation namespaces distinct", async () => { + const person = new Person({ + id: alice, + attachments: [ + new PropertyValue({ name: "Website", value: "https://example.com/" }), + ], + translations: [translation()], + }); + const json = record(await person.toJsonLd()); + deepStrictEqual(json.attachment, { + type: "PropertyValue", + name: "Website", + value: "https://example.com/", + }); + deepStrictEqual(json.translations, [entry]); + const restored = await Person.fromJsonLd(json); + const attachments = await Array.fromAsync(restored.getAttachments()); + ok(attachments[0] instanceof PropertyValue); + deepStrictEqual(attachments[0].value, "https://example.com/"); + deepStrictEqual(restored.translations[0].original, articleId); +}); + +test("FEP-22cd explicit actor trust remains opt-in and clones retain untrusted state", async () => { + const parsed = await Translation.fromJsonLd({ + "@context": context, + type: "Translation", + id: "https://victim.example/metadata", + translator: [{ id: "https://victim.example/actor", type: "Application" }], + }); + ok( + await parsed.getTranslator({ + documentLoader: noFetch, + crossOrigin: "trust", + }) instanceof Application, + ); + const clone = parsed.clone({ sourceUpdated }); + ok( + await clone.getTranslator({ + documentLoader: actorLoader("Person"), + }) instanceof Person, + ); + const local = parsed.clone({ translator: new Application({ id: alice }) }); + ok( + await local.getTranslator({ documentLoader: noFetch }) instanceof + Application, + ); +}); diff --git a/packages/vocab/src/translation.yaml b/packages/vocab/src/translation.yaml new file mode 100644 index 000000000..48ff45edb --- /dev/null +++ b/packages/vocab/src/translation.yaml @@ -0,0 +1,91 @@ +$schema: ../../vocab-tools/schema.yaml +name: Translation +compactName: Translation +uri: "https://w3id.org/fep/22cd#Translation" +entity: false +trustEmbeddedObjects: false +description: | + Translator credit and source freshness for one language version of an + {@link Object}, as defined by the draft + [FEP-22cd](https://w3id.org/fep/22cd). This is embedded metadata, not an + independent post or activity target. Its optional identifier need not be + dereferenceable and does not establish trust in embedded translator actors. + + Targets [draft revision 6d0d6559](https://codeberg.org/fediverse/fep/src/commit/6d0d6559054baeb7b71a5f2bdc14fc4c09b66f39/fep/22cd/fep-22cd.md). +defaultContext: +- "https://www.w3.org/ns/activitystreams" +- "https://w3id.org/fep/22cd" +properties: +- singularName: language + functional: true + compactName: inLanguage + uri: "https://schema.org/inLanguage" + description: | + The translated language. Publishers must match a language in the + containing object's content, name, or summary map. + range: + - "fedify:langTag" + +- pluralName: translators + singularName: translator + singularAccessor: true + compactName: translator + uri: "https://schema.org/translator" + extraContext: "https://w3id.org/fep/22cd" + description: | + The actors credited for this language version. Their order has no + meaning. Human actors credit translation or review; Application and + Service actors credit machine output. If any actor cannot be resolved, + the entry's human-or-machine status is unknown. Credit is asserted by + the publisher and grants no publishing authority. Embedded actors with + identifiers are fetched before being returned unless explicitly trusted. + range: + - "https://www.w3.org/ns/activitystreams#Application" + - "https://www.w3.org/ns/activitystreams#Group" + - "https://www.w3.org/ns/activitystreams#Organization" + - "https://www.w3.org/ns/activitystreams#Person" + - "https://www.w3.org/ns/activitystreams#Service" + +- singularName: original + functional: true + compactName: translationOfWork + uri: "https://schema.org/translationOfWork" + description: | + The identifier of the containing object. FEP-22cd translations share + that object's identity rather than introducing separate posts. + range: + - "http://www.w3.org/2001/XMLSchema#anyURI" + +- singularName: sourceUpdated + functional: true + compactName: sourceUpdated + uri: "https://w3id.org/fep/22cd#sourceUpdated" + description: | + The source object's updated timestamp (or published timestamp if it has + no updated timestamp) at the last human review of this translation. + An absent value makes no freshness claim. A value earlier than the + current source timestamp indicates a potentially stale translation; + an equal or later value reflects the current source. + range: + - "http://www.w3.org/2001/XMLSchema#dateTime" + +- singularName: basis + functional: true + compactName: isBasedOn + uri: "https://schema.org/isBasedOn" + description: | + An optional public revision resource identifying the source reviewed. + Supplements sourceUpdated without requiring private revision history + to be exposed. + range: + - "http://www.w3.org/2001/XMLSchema#anyURI" + +- pluralName: urls + singularName: url + singularAccessor: true + compactName: url + uri: "https://www.w3.org/ns/activitystreams#url" + description: Links to renderings of this specific language version. + range: + - "http://www.w3.org/2001/XMLSchema#anyURI" + - "https://www.w3.org/ns/activitystreams#Link" diff --git a/packages/vocab/src/vocab.test.ts b/packages/vocab/src/vocab.test.ts index 472059d10..50a390c98 100644 --- a/packages/vocab/src/vocab.test.ts +++ b/packages/vocab/src/vocab.test.ts @@ -5415,7 +5415,25 @@ for (const typeUri in types) { const jsonLd = await instance.toJsonLd({ contextLoader: mockDocumentLoader, }); - deepStrictEqual(jsonLd["@context"], type.defaultContext); + const defaultContexts = Array.isArray(type.defaultContext) + ? type.defaultContext + : [type.defaultContext]; + const extraContexts = [ + ...new Set( + allProperties.flatMap((property) => + property.extraContext == null || + defaultContexts.some((context) => context === property.extraContext) + ? [] + : [property.extraContext] + ), + ), + ]; + deepStrictEqual( + jsonLd["@context"], + extraContexts.length === 0 + ? type.defaultContext + : [...defaultContexts, ...extraContexts], + ); if (type.entity) deepStrictEqual(jsonLd.id, "https://example.com/"); const restored = await cls.fromJsonLd(jsonLd, { documentLoader: mockDocumentLoader, From 0e52f4b5dbacd3278374847d771da02321724468 Mon Sep 17 00:00:00 2001 From: Hong Minhee Date: Thu, 17 Sep 2026 18:23:52 +0900 Subject: [PATCH 2/2] Import Temporal explicitly in translation tests Load the existing polyfill before initializing translation fixtures so source test discovery does not depend on a native Temporal global. Use a dynamic import with a separate binding because the bundler rewrites static aliases to Temporal, colliding with the test bundle's injected Temporal import. https://github.com/fedify-dev/fedify/pull/1038#discussion_r4034870583 Changelog: none Assisted-by: Codex:gpt-6-astra --- packages/vocab/src/translation.test.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/vocab/src/translation.test.ts b/packages/vocab/src/translation.test.ts index 5b80138f1..ad1858fc9 100644 --- a/packages/vocab/src/translation.test.ts +++ b/packages/vocab/src/translation.test.ts @@ -23,6 +23,9 @@ import { Update, } from "./mod.ts"; +// Keep this binding separate from Temporal injected into bundled tests. +const { Temporal: TemporalPolyfill } = await import("temporal-polyfill"); + // FEP-22cd draft and examples, pinned to: // https://codeberg.org/fediverse/fep/src/commit/6d0d6559054baeb7b71a5f2bdc14fc4c09b66f39/fep/22cd/fep-22cd.md const AS = "https://www.w3.org/ns/activitystreams"; @@ -31,7 +34,7 @@ const SCHEMA = "https://schema.org/"; const articleId = new URL("https://example.com/articles/1"); const alice = new URL("https://example.com/users/alice"); const context = [AS, FEP]; -const sourceUpdated = Temporal.Instant.from("2026-09-01T00:00:00Z"); +const sourceUpdated = TemporalPolyfill.Instant.from("2026-09-01T00:00:00Z"); const entry = { type: "Translation", inLanguage: "ko", @@ -208,10 +211,10 @@ test("FEP-22cd organization languages, multiple translators and review-only Upda }), ], }); - const editedAt = Temporal.Instant.from("2026-09-15T00:00:00Z"); + const editedAt = TemporalPolyfill.Instant.from("2026-09-15T00:00:00Z"); const edited = initial.clone({ updated: editedAt }); ok( - Temporal.Instant.compare( + TemporalPolyfill.Instant.compare( edited.translations[0].sourceUpdated!, edited.updated!, ) < 0,