Unverified Commit 2261b4cf authored by Hong Minhee's avatar Hong Minhee
Browse files

Merge tag '1.8.11'

Fedify 1.8.11
parents 128983b6 6d15b925
Loading
Loading
Loading
Loading
+211 −0
Original line number Diff line number Diff line
@@ -193,6 +193,31 @@ To be released.
    CommonJS-based Node.js applications.  [[#429], [#431]]


Version 1.8.11
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.8.10
--------------

Released on Steptember 17, 2025.

### @fedify/fedify

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.8.9
-------------

@@ -547,6 +572,29 @@ the versioning.
[iTerm]: https://iterm2.com/


Version 1.7.13
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.7.12
--------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.7.11
--------------

@@ -709,6 +757,29 @@ Released on June 25, 2025.
[#252]: https://github.com/fedify-dev/fedify/pull/252


Version 1.6.12
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.6.11
--------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.6.10
--------------

@@ -874,6 +945,29 @@ the versioning.
[#242]: https://github.com/fedify-dev/fedify/pull/242


Version 1.5.9
-------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.5.8
-------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.5.7
-------------

@@ -1085,6 +1179,29 @@ Released on March 28, 2025.
[multibase]: https://github.com/multiformats/js-multibase


Version 1.4.17
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.4.16
--------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.4.15
--------------

@@ -1371,6 +1488,29 @@ Released on February 5, 2025.
[#195]: https://github.com/fedify-dev/fedify/issues/195


Version 1.3.24
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.3.23
--------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.3.22
--------------

@@ -1775,6 +1915,29 @@ Released on November 30, 2024.
[#193]: https://github.com/fedify-dev/fedify/issues/193


Version 1.2.27
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.2.26
--------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.2.25
--------------

@@ -2212,6 +2375,29 @@ Released on October 31, 2024.
[#118]: https://github.com/fedify-dev/fedify/issues/118


Version 1.1.27
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.1.26
--------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]


Version 1.1.25
--------------

@@ -2690,6 +2876,31 @@ Released on October 20, 2024.
[#150]: https://github.com/fedify-dev/fedify/issues/150


Version 1.0.30
--------------

Released on September 17, 2025.

 -  Improved the AT Protocol URI workaround to handle all DID methods and
    edge cases. The fix now properly percent-encodes any authority component
    in `at://` URIs, supporting `did:web`, `did:key`, and other DID methods
    beyond just `did:plc`. Also handles URIs without path components
    correctly.  [[#436]]


Version 1.0.29
--------------

Released on September 17, 2025.

 -  Added a temporary workaround for invalid AT Protocol URIs from BridgyFed.
    URIs like `at://did:plc:...` that violate RFC 3986 URI syntax are now
    automatically URL-encoded to `at://did%3Aplc%3A...` to prevent parsing
    failures when processing bridged Bluesky content.  [[#436]]

[#436]: https://github.com/fedify-dev/fedify/issues/436


Version 1.0.28
--------------

+140 −10
Original line number Diff line number Diff line
@@ -8395,7 +8395,20 @@ get urls(): ((URL | Link))[] {
      const decoded =
      typeof v === \\"object\\" && \\"@id\\" in v
        && typeof v[\\"@id\\"] === \\"string\\"
        && v[\\"@id\\"] !== \\"\\" && v[\\"@id\\"] !== \\"/\\" ? new URL(v[\\"@id\\"]) : typeof v === \\"object\\" && \\"@type\\" in v
        && v[\\"@id\\"] !== \\"\\" && v[\\"@id\\"] !== \\"/\\" ? v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]) : 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) : undefined
@@ -14238,7 +14251,20 @@ get endpoints(): (URL)[] {
        : _2KM4fetG6FTJ1cphj76rzJ8Dyv7p_serviceEndpoint__array
    ) {
      if (v == null) continue;
    _2KM4fetG6FTJ1cphj76rzJ8Dyv7p_serviceEndpoint.push(new URL(v[\\"@id\\"]))
    _2KM4fetG6FTJ1cphj76rzJ8Dyv7p_serviceEndpoint.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_2KM4fetG6FTJ1cphj76rzJ8Dyv7p_serviceEndpoint = _2KM4fetG6FTJ1cphj76rzJ8Dyv7p_serviceEndpoint;
    
@@ -32950,7 +32976,20 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint
        : _2JCYDbSxEHCCLdBYed33cCETfGyR_proxyUrl__array
    ) {
      if (v == null) continue;
    _2JCYDbSxEHCCLdBYed33cCETfGyR_proxyUrl.push(new URL(v[\\"@id\\"]))
    _2JCYDbSxEHCCLdBYed33cCETfGyR_proxyUrl.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_2JCYDbSxEHCCLdBYed33cCETfGyR_proxyUrl = _2JCYDbSxEHCCLdBYed33cCETfGyR_proxyUrl;
    const _25S6UmgzDead8hxL5sQFezZTAusd_oauthAuthorizationEndpoint: (URL)[] = [];
@@ -32965,7 +33004,20 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint
        : _25S6UmgzDead8hxL5sQFezZTAusd_oauthAuthorizationEndpoint__array
    ) {
      if (v == null) continue;
    _25S6UmgzDead8hxL5sQFezZTAusd_oauthAuthorizationEndpoint.push(new URL(v[\\"@id\\"]))
    _25S6UmgzDead8hxL5sQFezZTAusd_oauthAuthorizationEndpoint.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_25S6UmgzDead8hxL5sQFezZTAusd_oauthAuthorizationEndpoint = _25S6UmgzDead8hxL5sQFezZTAusd_oauthAuthorizationEndpoint;
    const _iAMxqrSba7yBCRB1FZ5kEVdKEZ3_oauthTokenEndpoint: (URL)[] = [];
@@ -32980,7 +33032,20 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint
        : _iAMxqrSba7yBCRB1FZ5kEVdKEZ3_oauthTokenEndpoint__array
    ) {
      if (v == null) continue;
    _iAMxqrSba7yBCRB1FZ5kEVdKEZ3_oauthTokenEndpoint.push(new URL(v[\\"@id\\"]))
    _iAMxqrSba7yBCRB1FZ5kEVdKEZ3_oauthTokenEndpoint.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_iAMxqrSba7yBCRB1FZ5kEVdKEZ3_oauthTokenEndpoint = _iAMxqrSba7yBCRB1FZ5kEVdKEZ3_oauthTokenEndpoint;
    const _8Bx9qN8oU7Bpt2xi6khaxWp1gMr_provideClientKey: (URL)[] = [];
@@ -32995,7 +33060,20 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint
        : _8Bx9qN8oU7Bpt2xi6khaxWp1gMr_provideClientKey__array
    ) {
      if (v == null) continue;
    _8Bx9qN8oU7Bpt2xi6khaxWp1gMr_provideClientKey.push(new URL(v[\\"@id\\"]))
    _8Bx9qN8oU7Bpt2xi6khaxWp1gMr_provideClientKey.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_8Bx9qN8oU7Bpt2xi6khaxWp1gMr_provideClientKey = _8Bx9qN8oU7Bpt2xi6khaxWp1gMr_provideClientKey;
    const _3dU7PMVQZJpsCpo2F4RQXxBXdPmS_signClientKey: (URL)[] = [];
@@ -33010,7 +33088,20 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint
        : _3dU7PMVQZJpsCpo2F4RQXxBXdPmS_signClientKey__array
    ) {
      if (v == null) continue;
    _3dU7PMVQZJpsCpo2F4RQXxBXdPmS_signClientKey.push(new URL(v[\\"@id\\"]))
    _3dU7PMVQZJpsCpo2F4RQXxBXdPmS_signClientKey.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_3dU7PMVQZJpsCpo2F4RQXxBXdPmS_signClientKey = _3dU7PMVQZJpsCpo2F4RQXxBXdPmS_signClientKey;
    const _3JprUSDLVqqX4dwHRi37qGZZCRCc_sharedInbox: (URL)[] = [];
@@ -33025,7 +33116,20 @@ proxyUrl?: URL | null;oauthAuthorizationEndpoint?: URL | null;oauthTokenEndpoint
        : _3JprUSDLVqqX4dwHRi37qGZZCRCc_sharedInbox__array
    ) {
      if (v == null) continue;
    _3JprUSDLVqqX4dwHRi37qGZZCRCc_sharedInbox.push(new URL(v[\\"@id\\"]))
    _3JprUSDLVqqX4dwHRi37qGZZCRCc_sharedInbox.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_3JprUSDLVqqX4dwHRi37qGZZCRCc_sharedInbox = _3JprUSDLVqqX4dwHRi37qGZZCRCc_sharedInbox;
    
@@ -40970,7 +41074,20 @@ get names(): ((string | LanguageString))[] {
        : _pVjLsybKQdmkjuU7MHjiVmNnuj7_href__array
    ) {
      if (v == null) continue;
    _pVjLsybKQdmkjuU7MHjiVmNnuj7_href.push(new URL(v[\\"@id\\"]))
    _pVjLsybKQdmkjuU7MHjiVmNnuj7_href.push(v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]))
    }
    instance.#_pVjLsybKQdmkjuU7MHjiVmNnuj7_href = _pVjLsybKQdmkjuU7MHjiVmNnuj7_href;
    const _2a1c5GkfkQsnyyLybF8UXBQfFuHZ_rel: (string)[] = [];
@@ -58716,7 +58833,20 @@ proofs?: (DataIntegrityProof | URL)[];accuracy?: number | null;altitude?: number
      typeof v === \\"object\\" && \\"@value\\" in v
      && (v[\\"@value\\"] == \\"cm\\" || v[\\"@value\\"] == \\"feet\\" || v[\\"@value\\"] == \\"inches\\" || v[\\"@value\\"] == \\"km\\" || v[\\"@value\\"] == \\"m\\" || v[\\"@value\\"] == \\"miles\\") ? v[\\"@value\\"] : typeof v === \\"object\\" && \\"@id\\" in v
        && typeof v[\\"@id\\"] === \\"string\\"
        && v[\\"@id\\"] !== \\"\\" && v[\\"@id\\"] !== \\"/\\" ? new URL(v[\\"@id\\"]) : undefined
        && v[\\"@id\\"] !== \\"\\" && v[\\"@id\\"] !== \\"/\\" ? v[\\"@id\\"].startsWith(\\"at://\\")
        ? new URL(\\"at://\\" +
          encodeURIComponent(
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(5, v[\\"@id\\"].indexOf(\\"/\\", 5))
              : v[\\"@id\\"].slice(5)
          ) +
          (
            v[\\"@id\\"].includes(\\"/\\", 5)
              ? v[\\"@id\\"].slice(v[\\"@id\\"].indexOf(\\"/\\", 5))
              : \\"\\"
          )
        )
        : new URL(v[\\"@id\\"]) : undefined
      ;
      if (typeof decoded === \\"undefined\\") continue;
      _oKrwxU4V8wiKhMW1QEYQibcJh8c_units.push(decoded);
+14 −1
Original line number Diff line number Diff line
@@ -144,7 +144,20 @@ const scalarTypes: Record<string, ScalarType> = {
        && ${v}["@id"] !== "" && ${v}["@id"] !== "/"`;
    },
    decoder(v) {
      return `new URL(${v}["@id"])`;
      return `${v}["@id"].startsWith("at://")
        ? new URL("at://" +
          encodeURIComponent(
            ${v}["@id"].includes("/", 5)
              ? ${v}["@id"].slice(5, ${v}["@id"].indexOf("/", 5))
              : ${v}["@id"].slice(5)
          ) +
          (
            ${v}["@id"].includes("/", 5)
              ? ${v}["@id"].slice(${v}["@id"].indexOf("/", 5))
              : ""
          )
        )
        : new URL(${v}["@id"])`;
    },
  },
  "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString": {
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ test("MemoryKvStore", async (t) => {
    await store.set(["foo", "baz"], "baz", {
      ttl: Temporal.Duration.from({ seconds: 0 }),
    });
    await new Promise((resolve) => setTimeout(resolve, 10));
    assertEquals(await store.get(["foo", "baz"]), undefined);
  });

+0 −1
Original line number Diff line number Diff line
@@ -114,7 +114,6 @@ export async function importMultibaseKey(key: string): Promise<CryptoKey> {
    const spki = exported instanceof Uint8Array
      ? exported
      : new Uint8Array(exported);

    return await crypto.subtle.importKey(
      "spki",
      new Uint8Array(spki),
Loading