@fedify/fedify 2.5.0-dev.2364 → 2.5.0-dev.2378

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/{builder-ClDm_1c7.mjs → builder-J1K0IJj6.mjs} +2 -2
  2. package/dist/compat/mod.d.cts +1 -1
  3. package/dist/compat/mod.d.ts +1 -1
  4. package/dist/compat/transformers.test.mjs +1 -1
  5. package/dist/{compound-proof-D03g5HXz.mjs → compound-proof-DtmVrMV7.mjs} +47 -19
  6. package/dist/{context-tsYPJ2Ew.d.cts → context-BjD_CTxh.d.cts} +1 -1
  7. package/dist/{context-7NyiqIcg.d.ts → context-C2-UDo2c.d.ts} +1 -1
  8. package/dist/{deno-Bp8q024B.mjs → deno-Ci6tSK9-.mjs} +1 -1
  9. package/dist/{docloader-DarxdYmj.mjs → docloader-DZ9h6KJS.mjs} +2 -2
  10. package/dist/federation/builder.test.mjs +1 -1
  11. package/dist/federation/compound-fanout.test.mjs +3 -3
  12. package/dist/federation/handler-compound-proof.test.mjs +3 -3
  13. package/dist/federation/handler.test.mjs +4 -5
  14. package/dist/federation/hashlink-media.test.mjs +2 -2
  15. package/dist/federation/idempotency.test.mjs +2 -2
  16. package/dist/federation/inbox-report.test.mjs +5 -5
  17. package/dist/federation/metrics.test.mjs +1 -1
  18. package/dist/federation/middleware.test.mjs +7 -7
  19. package/dist/federation/mod.cjs +1 -1
  20. package/dist/federation/mod.d.cts +3 -3
  21. package/dist/federation/mod.d.ts +3 -3
  22. package/dist/federation/mod.js +1 -1
  23. package/dist/federation/outgoing-proof.test.mjs +4 -5
  24. package/dist/federation/portable-actor.test.mjs +3 -3
  25. package/dist/federation/portable-chain.test.mjs +3 -3
  26. package/dist/federation/portable-collection.test.mjs +4 -4
  27. package/dist/federation/portable-delivery.test.mjs +2 -2
  28. package/dist/federation/portable-gateway-keys.test.mjs +4 -4
  29. package/dist/federation/portable-inbox.test.mjs +4 -4
  30. package/dist/federation/portable-parse-uri.test.mjs +1 -1
  31. package/dist/federation/portable-route-activity.test.mjs +2 -2
  32. package/dist/federation/portable.test.mjs +3 -3
  33. package/dist/federation/send.test.mjs +3 -3
  34. package/dist/federation/tasks/enqueue.test.mjs +1 -1
  35. package/dist/federation/tasks/tasks.test.mjs +2 -2
  36. package/dist/federation/temporal.test.mjs +1 -1
  37. package/dist/federation/webfinger.test.mjs +1 -1
  38. package/dist/{federation-BW53Wxj7.cjs → federation-lzy7M3hT.cjs} +48 -20
  39. package/dist/{http-D6JDnBO1.mjs → http-CFyizTHa.mjs} +4 -4
  40. package/dist/{http-Cg5Yj_yk.js → http-Cmz7x6Iw.js} +151 -19
  41. package/dist/{http-Btzv2JZU.cjs → http-D1RPHoq3.cjs} +161 -17
  42. package/dist/{key-DYxuyd-s.d.cts → key-DhsBxxZN.d.ts} +6 -2
  43. package/dist/{key-C1nv7_jD.d.ts → key-nYGY4QB9.d.cts} +6 -2
  44. package/dist/{kv-cache-CamfvHLY.js → kv-cache-C0-HuvwP.js} +1 -1
  45. package/dist/{kv-cache-0qHe-sN1.cjs → kv-cache-Jym5nP3J.cjs} +1 -1
  46. package/dist/{kv-cache-BoekCvYF.mjs → kv-cache-rOQX3I3c.mjs} +1 -1
  47. package/dist/{key-R5cUSA6S.mjs → ld-DJ--ZUpr.mjs} +760 -16
  48. package/dist/{metrics-DUdlIyrB.mjs → metrics-Dwgav7s_.mjs} +1 -1
  49. package/dist/{middleware-Hl0lTClT.mjs → middleware-BbBsa5iR.mjs} +13 -14
  50. package/dist/{middleware-DLB1TqQ1.mjs → middleware-CJWxuUy5.mjs} +1 -1
  51. package/dist/{middleware-BYOXwJvI.js → middleware-CqgRIsWM.js} +48 -20
  52. package/dist/{mod-Dw-nPxQh.d.cts → mod-B5-wdzmJ.d.cts} +1 -1
  53. package/dist/{mod-BojP2Bw3.d.cts → mod-BBPd4M_0.d.cts} +1 -1
  54. package/dist/{mod-CtpF2BU5.d.ts → mod-BRpER-B0.d.ts} +1 -1
  55. package/dist/{mod-Xj5P4s4d.d.ts → mod-CUYBGKof.d.ts} +1 -1
  56. package/dist/{mod-DEZXwV6J.d.ts → mod-DkhfZC1u.d.ts} +1 -1
  57. package/dist/{mod-CavhAgLw.d.cts → mod-xAfaLS4T.d.cts} +1 -1
  58. package/dist/mod.cjs +4 -4
  59. package/dist/mod.d.cts +5 -5
  60. package/dist/mod.d.ts +5 -5
  61. package/dist/mod.js +4 -4
  62. package/dist/nodeinfo/handler.test.mjs +1 -1
  63. package/dist/{owner-CKHKMnp-.mjs → owner-Btd7SwMj.mjs} +3 -3
  64. package/dist/{portable-collection-CyTnj1m9.cjs → portable-collection-BvWxS1sL.cjs} +1 -1
  65. package/dist/{portable-collection-Dhg0By3t.js → portable-collection-DwQT28O2.js} +1 -1
  66. package/dist/{portable-collection-DxVKitQN.mjs → portable-collection-gb9V8XEO.mjs} +2 -2
  67. package/dist/{portable-key-BOBhrrKN.mjs → portable-key-Cwti99nP.mjs} +1 -1
  68. package/dist/{proof-BGyUYuOb.mjs → proof-Bwzv6mXZ.mjs} +44 -11
  69. package/dist/{send-DmlYxKmb.mjs → send-BrQYUSb4.mjs} +3 -3
  70. package/dist/sig/compound-proof-discovery.test.mjs +1 -1
  71. package/dist/sig/compound-proof-producer.test.mjs +1 -1
  72. package/dist/sig/compound-proof-verification.test.mjs +168 -2
  73. package/dist/sig/compound-proof.test.mjs +2 -2
  74. package/dist/sig/http.test.mjs +2 -2
  75. package/dist/sig/key.test.mjs +208 -3
  76. package/dist/sig/ld.test.mjs +1 -2
  77. package/dist/sig/mitra-receive-interop.test.mjs +4 -4
  78. package/dist/sig/mitra-send-interop.test.mjs +3 -3
  79. package/dist/sig/mod.cjs +2 -2
  80. package/dist/sig/mod.d.cts +2 -2
  81. package/dist/sig/mod.d.ts +2 -2
  82. package/dist/sig/mod.js +2 -2
  83. package/dist/sig/owner.test.mjs +1 -1
  84. package/dist/sig/portable-collection.test.mjs +1 -1
  85. package/dist/sig/portable-interop.test.mjs +3 -3
  86. package/dist/sig/portable-key.test.mjs +5 -6
  87. package/dist/sig/proof.test.mjs +3 -3
  88. package/dist/sig/tootik-request-interop.test.mjs +4 -4
  89. package/dist/sig/tootik-send-interop.test.mjs +3 -3
  90. package/dist/sig/verification.test.mjs +3 -3
  91. package/dist/{temporal-Bvota1RR.mjs → temporal-BRaCTxVe.mjs} +1 -1
  92. package/dist/testing/kv.test.mjs +1 -1
  93. package/dist/testing/mod.d.mts +5 -1
  94. package/dist/utils/docloader.test.mjs +2 -2
  95. package/dist/utils/kv-cache.test.mjs +1 -1
  96. package/dist/utils/mod.cjs +1 -1
  97. package/dist/utils/mod.d.cts +1 -1
  98. package/dist/utils/mod.d.ts +1 -1
  99. package/dist/utils/mod.js +1 -1
  100. package/package.json +6 -6
  101. package/dist/ld-B6RQHcnq.mjs +0 -658
@@ -1,7 +1,7 @@
1
1
  import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-Bp8q024B.mjs";
4
+ import { n as version, t as name } from "./deno-Ci6tSK9-.mjs";
5
5
  import { metrics } from "@opentelemetry/api";
6
6
  import { FetchError } from "@fedify/vocab-runtime";
7
7
  //#region src/federation/metrics.ts
@@ -4,28 +4,27 @@ globalThis.addEventListener = () => {};
4
4
  import { d as isPortableUri, f as isSameObjectId, i as getPortableDid, l as isPortableId, n as getCanonicalPortableId, o as hasPortableActor, r as getGatewayKeyBase, s as isCompatibleKeyId, t as getAuthenticationOrigin, u as isPortableKeyId } from "./portable-key-id-Ca30-hOa.mjs";
5
5
  import { n as isPubliclyAddressedNode, t as isInAudience } from "./audience-CHQ-FlLD.mjs";
6
6
  import { a as verificationObservation, r as snapshotKey, t as observeAttempt } from "./verification-Dpfcw8ml.mjs";
7
- import { n as version, t as name } from "./deno-Bp8q024B.mjs";
8
- import { a as instrumentDocumentLoader, b as recordWebFingerHandle, c as recordCircuitBreakerStateChange, d as recordCollectionRequest, f as recordCollectionTotalItems, g as recordInboxActivity, h as recordFanoutRecipients, i as getRemoteHost, l as recordCollectionDispatchDuration, n as getDurationMs, o as isAbortError, r as getFederationMetrics, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "./metrics-DUdlIyrB.mjs";
7
+ import { n as version, t as name } from "./deno-Ci6tSK9-.mjs";
8
+ import { a as instrumentDocumentLoader, b as recordWebFingerHandle, c as recordCircuitBreakerStateChange, d as recordCollectionRequest, f as recordCollectionTotalItems, g as recordInboxActivity, h as recordFanoutRecipients, i as getRemoteHost, l as recordCollectionDispatchDuration, n as getDurationMs, o as isAbortError, r as getFederationMetrics, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "./metrics-Dwgav7s_.mjs";
9
9
  import { t as formatAcceptSignature } from "./accept-CPVqki78.mjs";
10
- import { c as validateCryptoKey, n as exportJwk, s as importJwk } from "./key-R5cUSA6S.mjs";
10
+ import { T as validateCryptoKey, _ as wrapContextLoaderForJsonLd, a as compactJsonLd, c as getNormalizationContextLoader, d as isClearlyMalformedContextReference, f as isInvalidUrlTypeError, l as hasSignature, m as verifyCompactJsonLd, p as signJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as hasSignatureLike, w as importJwk, y as exportJwk } from "./ld-DJ--ZUpr.mjs";
11
11
  import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-4IJqPYos.mjs";
12
- import { _ as wrapContextLoaderForJsonLd, a as compactJsonLd, c as getNormalizationContextLoader, d as isClearlyMalformedContextReference, f as isInvalidUrlTypeError, l as hasSignature, m as verifyCompactJsonLd, p as signJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as hasSignatureLike } from "./ld-B6RQHcnq.mjs";
13
- import { a as signObject, c as verifyPortableObjectProof, i as hasProofLike, s as verifyObject, t as InvalidPortableObjectIdError, u as verifyPortableObjectProofWithRoot } from "./proof-BGyUYuOb.mjs";
14
- import { a as listRequestSignatures, c as selectRequestSignature, d as validateMaxSignatures, f as verifyRequest, p as verifyRequestDetailed, s as parseRfc9421SignatureInput } from "./http-D6JDnBO1.mjs";
15
- import { t as getAuthenticatedDocumentLoader } from "./docloader-DarxdYmj.mjs";
16
- import { n as kvCache } from "./kv-cache-BoekCvYF.mjs";
12
+ import { c as verifyObject, d as verifyPortableObjectProofWithRoot, i as hasProofLike, l as verifyPortableObjectProof, o as signObject, t as InvalidPortableObjectIdError } from "./proof-Bwzv6mXZ.mjs";
13
+ import { a as listRequestSignatures, c as selectRequestSignature, d as validateMaxSignatures, f as verifyRequest, p as verifyRequestDetailed, s as parseRfc9421SignatureInput } from "./http-CFyizTHa.mjs";
14
+ import { t as getAuthenticatedDocumentLoader } from "./docloader-DZ9h6KJS.mjs";
15
+ import { n as kvCache } from "./kv-cache-rOQX3I3c.mjs";
17
16
  import { d as readBoundedText, l as BodyTooLargeError, t as getNodeInfo, u as MAX_BODY_SIZE } from "./client-CEnNz8O7.mjs";
18
17
  import { t as nodeInfoToJson } from "./types-DE_LV1JB.mjs";
19
- import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-CKHKMnp-.mjs";
20
- import { t as verifyPortableObject } from "./portable-collection-DxVKitQN.mjs";
21
- import { a as getOrderingDestination, i as sendActivityThroughGateways, n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-DmlYxKmb.mjs";
22
- import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-ClDm_1c7.mjs";
18
+ import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-Btd7SwMj.mjs";
19
+ import { t as verifyPortableObject } from "./portable-collection-gb9V8XEO.mjs";
20
+ import { a as getOrderingDestination, i as sendActivityThroughGateways, n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-BrQYUSb4.mjs";
21
+ import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-J1K0IJj6.mjs";
23
22
  import { t as CircuitBreaker } from "./circuit-breaker-XJ53md4S.mjs";
24
23
  import { t as buildCollectionSynchronizationHeader } from "./collection-CnnP1UAv.mjs";
25
- import { a as inspectCompoundPortableObjectApplicability, c as verifyServedPortableObjects, i as findUnsupportedCompoundProofShape, o as verifyCompoundPortableObjectProofs, r as findEmbeddedProofWithoutContext, t as containsCompoundPortableObject } from "./compound-proof-D03g5HXz.mjs";
24
+ import { a as inspectCompoundPortableObjectApplicability, c as verifyServedPortableObjects, i as findUnsupportedCompoundProofShape, o as verifyCompoundPortableObjectProofs, r as findEmbeddedProofWithoutContext, t as containsCompoundPortableObject } from "./compound-proof-DtmVrMV7.mjs";
26
25
  import { t as KvKeyCache } from "./keycache-D-MNltOk.mjs";
27
26
  import { t as acceptsJsonLd } from "./negotiation-CCocWT_N.mjs";
28
- import { t as hasMalformedKnownTemporalLiteral } from "./temporal-Bvota1RR.mjs";
27
+ import { t as hasMalformedKnownTemporalLiteral } from "./temporal-BRaCTxVe.mjs";
29
28
  import { t as createExponentialBackoffPolicy } from "./retry-zX5xw5e0.mjs";
30
29
  import { t as TaskCodec } from "./codec-C6rTrpIp.mjs";
31
30
  import { getLogger, withContext } from "@logtape/logtape";
@@ -1,5 +1,5 @@
1
1
  import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as FederationImpl } from "./middleware-Hl0lTClT.mjs";
4
+ import { n as FederationImpl } from "./middleware-BbBsa5iR.mjs";
5
5
  export { FederationImpl };
@@ -2,10 +2,10 @@ import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { t as __exportAll } from "./rolldown-runtime-BC-Eo5Mj.js";
4
4
  import { r as getDefaultActivityTransformers } from "./transformers-DAtXl_Kc.js";
5
- import { $ as instrumentDocumentLoader, A as hasSignature, At as isPortableUri, C as InvalidContextReferenceError, Ct as getGatewayKeyBase, Dt as isCompatibleKeyId, E as compactJsonLd, Et as hasPortableActor, F as verifyCompactJsonLd, G as validateCryptoKey, M as isClearlyMalformedContextReference, N as isInvalidUrlTypeError, Nt as name, O as detachSignature, Ot as isPortableId, P as signJsonLd, Pt as version, Q as getRemoteHost, R as wrapContextLoaderForJsonLd, S as normalizeOutgoingActivityJsonLd, St as getCanonicalPortableId, Tt as getRawCanonicalPortableId, W as importJwk, X as getDurationMs, Z as getFederationMetrics, _ as verifyObject, at as recordCollectionTotalItems, b as verifyPortableObjectProofWithRoot, bt as verificationObservation, c as verifyRequestDetailed, ct as recordInboxActivity, d as InvalidPortableObjectIdError, dt as recordWebFingerHandle, et as isAbortError, f as classifyFep2277CoreType, ft as registerQueueDepthGauge, g as verifyMapLocalProof, h as signObject, i as selectRequestSignature, it as recordCollectionRequest, j as hasSignatureLike, jt as isSameObjectId, k as getNormalizationContextLoader, kt as isPortableKeyId, lt as recordOutboxActivity, m as hasProofLike, mt as formatAcceptSignature, n as listRequestSignatures, nt as recordCollectionDispatchDuration, o as validateMaxSignatures, pt as preloadedOnlyDocumentLoader, q as MAX_PORTABLE_KEY_TTL, r as parseRfc9421SignatureInput, rt as recordCollectionPageItems, s as verifyRequest, st as recordFanoutRecipients, t as doubleKnock, tt as recordCircuitBreakerStateChange, ut as recordOutboxEnqueue, v as verifyPortableObjectProof, vt as observeAttempt, w as assertSafeJsonLd, wt as getPortableDid, xt as getAuthenticationOrigin, y as verifyPortableObjectProofPolicy, yt as snapshotKey, z as exportJwk } from "./http-Cg5Yj_yk.js";
5
+ import { $ as getFederationMetrics, A as detachSignature, At as isPortableId, B as wrapContextLoaderForJsonLd, Ct as getAuthenticationOrigin, Dt as getRawCanonicalPortableId, E as assertSafeJsonLd, Et as getPortableDid, F as isInvalidUrlTypeError, Ft as name, I as signJsonLd, It as version, K as importJwk, L as verifyCompactJsonLd, M as hasSignature, Mt as isPortableUri, N as hasSignatureLike, Nt as isSameObjectId, O as compactJsonLd, Ot as hasPortableActor, P as isClearlyMalformedContextReference, Q as getDurationMs, S as verifyPreparedPortableObjectProofPolicy, St as verificationObservation, T as InvalidContextReferenceError, Tt as getGatewayKeyBase, V as exportJwk, Y as MAX_PORTABLE_KEY_TTL, _ as verifyMapLocalProof, at as recordCollectionPageItems, b as verifyPortableObjectProofPolicy, bt as observeAttempt, c as verifyRequestDetailed, d as InvalidPortableObjectIdError, dt as recordOutboxActivity, et as getRemoteHost, f as classifyFep2277CoreType, ft as recordOutboxEnqueue, g as signObject, gt as formatAcceptSignature, h as preparePortableObjectProofPolicy, ht as preloadedOnlyDocumentLoader, i as selectRequestSignature, it as recordCollectionDispatchDuration, j as getNormalizationContextLoader, jt as isPortableKeyId, kt as isCompatibleKeyId, lt as recordFanoutRecipients, m as hasProofLike, mt as registerQueueDepthGauge, n as listRequestSignatures, nt as isAbortError, o as validateMaxSignatures, ot as recordCollectionRequest, pt as recordWebFingerHandle, q as validateCryptoKey, r as parseRfc9421SignatureInput, rt as recordCircuitBreakerStateChange, s as verifyRequest, st as recordCollectionTotalItems, t as doubleKnock, tt as instrumentDocumentLoader, ut as recordInboxActivity, v as verifyObject, w as normalizeOutgoingActivityJsonLd, wt as getCanonicalPortableId, x as verifyPortableObjectProofWithRoot, xt as snapshotKey, y as verifyPortableObjectProof } from "./http-Cmz7x6Iw.js";
6
6
  import { a as MAX_BODY_SIZE, i as BodyTooLargeError, n as getNodeInfo, o as readBoundedText, t as nodeInfoToJson } from "./types-_S2_MeLF.js";
7
- import { n as doesActorOwnKey, r as getKeyOwner, t as verifyPortableObject } from "./portable-collection-Dhg0By3t.js";
8
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-CamfvHLY.js";
7
+ import { n as doesActorOwnKey, r as getKeyOwner, t as verifyPortableObject } from "./portable-collection-DwQT28O2.js";
8
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-C0-HuvwP.js";
9
9
  import { getLogger, withContext } from "@logtape/logtape";
10
10
  import { Router, RouterError, assertPath } from "@fedify/uri-template";
11
11
  import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, PUBLIC_COLLECTION, Tombstone, getTypeId, isActor, lookupObject, traverseCollection } from "@fedify/vocab";
@@ -2053,7 +2053,7 @@ function discoverCompoundProofDocuments(json, limits) {
2053
2053
  statistics: Object.freeze({ ...inspected })
2054
2054
  };
2055
2055
  }
2056
- async function verifyDiscoveredProofDocuments(discovered, options) {
2056
+ async function verifyDiscoveredProofDocuments(discovered, options, rejectedPolicies = /* @__PURE__ */ new Map()) {
2057
2057
  const documents = await Promise.all(discovered.documents.map(async (document) => {
2058
2058
  const metadata = {
2059
2059
  path: document.path,
@@ -2078,10 +2078,20 @@ async function verifyDiscoveredProofDocuments(discovered, options) {
2078
2078
  id: subjectId,
2079
2079
  pointer: document.path
2080
2080
  }
2081
- } }, "objectIntegrity", (observation) => verifyMapLocalProof(document.securedDocument, {
2082
- ...options,
2083
- [verificationObservation]: inherited == null ? void 0 : observation
2084
- }), (key) => key != null);
2081
+ } }, "objectIntegrity", async (observation) => {
2082
+ const reason = rejectedPolicies.get(document.path);
2083
+ if (reason != null) {
2084
+ if (observation.attempt != null) observation.attempt.reason = {
2085
+ type: "proofPolicy",
2086
+ reason
2087
+ };
2088
+ return null;
2089
+ }
2090
+ return await verifyMapLocalProof(document.securedDocument, {
2091
+ ...options,
2092
+ [verificationObservation]: inherited == null ? void 0 : observation
2093
+ });
2094
+ }, (key) => key != null);
2085
2095
  return key == null ? Object.freeze({
2086
2096
  ...metadata,
2087
2097
  verified: false,
@@ -2103,7 +2113,29 @@ async function verifyDiscoveredProofDocuments(discovered, options) {
2103
2113
  async function verifyCompoundPortableObjectProofs(json, limits, options = {}) {
2104
2114
  const discovered = discoverCompoundProofDocuments(json, limits);
2105
2115
  if (discovered.status !== "ok") return discovered;
2106
- const proofs = await verifyDiscoveredProofDocuments(discovered, options);
2116
+ const collected = collectPortableObjects(discovered.snapshot);
2117
+ const objectByPath = new Map(collected.map((object) => [object.path, object]));
2118
+ const isKeyCandidate = (object) => object.keyOf != null && !Object.hasOwn(object.document, "proof");
2119
+ const prepareObject = async (object) => {
2120
+ if (object.depth > 0 && !Object.hasOwn(object.document, "@context")) return {
2121
+ prepared: false,
2122
+ reason: { type: "missingContext" }
2123
+ };
2124
+ try {
2125
+ const policy = await preparePortableObjectProofPolicy(object.document, options);
2126
+ return policy.prepared ? policy : {
2127
+ prepared: false,
2128
+ reason: policy.result.reason
2129
+ };
2130
+ } catch {
2131
+ return {
2132
+ prepared: false,
2133
+ reason: { type: "invalidPortableObject" }
2134
+ };
2135
+ }
2136
+ };
2137
+ const preparedByPath = new Map(await Promise.all(collected.filter((object) => !isKeyCandidate(object)).map(async (object) => [object.path, await prepareObject(object)])));
2138
+ const proofs = await verifyDiscoveredProofDocuments(discovered, options, new Map([...preparedByPath].flatMap(([path, prepared]) => prepared.prepared ? [] : [[path, prepared.reason]])));
2107
2139
  const proofByPath = new Map(proofs.map((proof) => [proof.path, proof]));
2108
2140
  const verifyPortableObject = async (object) => {
2109
2141
  const metadata = {
@@ -2111,15 +2143,14 @@ async function verifyCompoundPortableObjectProofs(json, limits, options = {}) {
2111
2143
  id: object.id,
2112
2144
  depth: object.depth
2113
2145
  };
2114
- if (object.depth > 0 && !Object.hasOwn(object.document, "@context")) return Object.freeze({
2115
- ...metadata,
2116
- verified: false,
2117
- reason: { type: "missingContext" }
2118
- });
2119
- const proof = proofByPath.get(object.path);
2120
- const key = proof?.verified === true ? proof.key : null;
2121
2146
  try {
2122
- const policy = await verifyPortableObjectProofPolicy(object.document, key, options);
2147
+ const prepared = preparedByPath.get(object.path) ?? await prepareObject(object);
2148
+ const proof = proofByPath.get(object.path);
2149
+ const key = proof?.verified === true ? proof.key : null;
2150
+ const policy = prepared.prepared ? verifyPreparedPortableObjectProofPolicy(prepared, key) : {
2151
+ verified: false,
2152
+ reason: prepared.reason
2153
+ };
2123
2154
  return policy.verified ? Object.freeze({
2124
2155
  ...metadata,
2125
2156
  id: policy.objectId,
@@ -2138,9 +2169,6 @@ async function verifyCompoundPortableObjectProofs(json, limits, options = {}) {
2138
2169
  });
2139
2170
  }
2140
2171
  };
2141
- const collected = collectPortableObjects(discovered.snapshot);
2142
- const objectByPath = new Map(collected.map((object) => [object.path, object]));
2143
- const isKeyCandidate = (object) => object.keyOf != null && !Object.hasOwn(object.document, "proof");
2144
2172
  const results = /* @__PURE__ */ new Map();
2145
2173
  for (const result of await Promise.all(collected.filter((object) => !isKeyCandidate(object)).map(verifyPortableObject))) results.set(result.path, result);
2146
2174
  let projections = 0;
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { b as HttpMessageSignaturesSpecDeterminer } from "./key-DYxuyd-s.cjs";
2
+ import { b as HttpMessageSignaturesSpecDeterminer } from "./key-nYGY4QB9.cjs";
3
3
  import { n as KvStore, t as KvKey } from "./kv-B2mzK5tl.cjs";
4
4
  import { t as DocumentFetchKind } from "./metrics-DVKYY6K1.cjs";
5
5
  import { DocumentLoader, DocumentLoaderFactoryOptions } from "@fedify/vocab-runtime";
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { Jt as WebFingerLinksDispatcher, St as ActorHandleMapper, bt as ActorAliasMapper, p as RequestContext, xt as ActorDispatcher } from "./context-tsYPJ2Ew.cjs";
2
+ import { Jt as WebFingerLinksDispatcher, St as ActorHandleMapper, bt as ActorAliasMapper, p as RequestContext, xt as ActorDispatcher } from "./context-BjD_CTxh.cjs";
3
3
  import { MeterProvider, Span, Tracer } from "@opentelemetry/api";
4
4
  import { RouterError, RouterOptions, RouterRouteResult } from "@fedify/uri-template";
5
5
 
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { B as VerifyPortableObjectProofOptions, a as KeyCache, v as VerificationObservationOptions, z as VerifyPortableObjectProofFailureReason } from "./key-C1nv7_jD.js";
2
+ import { B as VerifyPortableObjectProofOptions, a as KeyCache, v as VerificationObservationOptions, z as VerifyPortableObjectProofFailureReason } from "./key-DhsBxxZN.js";
3
3
  import { CryptographicKey, Multikey } from "@fedify/vocab";
4
4
  import { MeterProvider, TracerProvider } from "@opentelemetry/api";
5
5
  import { DocumentLoader, PortableObjectVerifierOptions } from "@fedify/vocab-runtime";
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { Jt as WebFingerLinksDispatcher, St as ActorHandleMapper, bt as ActorAliasMapper, p as RequestContext, xt as ActorDispatcher } from "./context-7NyiqIcg.js";
2
+ import { Jt as WebFingerLinksDispatcher, St as ActorHandleMapper, bt as ActorAliasMapper, p as RequestContext, xt as ActorDispatcher } from "./context-C2-UDo2c.js";
3
3
  import { RouterError, RouterOptions, RouterRouteResult } from "@fedify/uri-template";
4
4
  import { MeterProvider, Span, Tracer } from "@opentelemetry/api";
5
5
 
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { b as HttpMessageSignaturesSpecDeterminer } from "./key-C1nv7_jD.js";
2
+ import { b as HttpMessageSignaturesSpecDeterminer } from "./key-DhsBxxZN.js";
3
3
  import { n as KvStore, t as KvKey } from "./kv-B2mzK5tl.js";
4
4
  import { t as DocumentFetchKind } from "./metrics-DoRtI0qU.js";
5
5
  import { MeterProvider, TracerProvider } from "@opentelemetry/api";
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { B as VerifyPortableObjectProofOptions, a as KeyCache, v as VerificationObservationOptions, z as VerifyPortableObjectProofFailureReason } from "./key-DYxuyd-s.cjs";
2
+ import { B as VerifyPortableObjectProofOptions, a as KeyCache, v as VerificationObservationOptions, z as VerifyPortableObjectProofFailureReason } from "./key-nYGY4QB9.cjs";
3
3
  import { CryptographicKey, Multikey } from "@fedify/vocab";
4
4
  import { DocumentLoader, PortableObjectVerifierOptions } from "@fedify/vocab-runtime";
5
5
  import { MeterProvider, TracerProvider } from "@opentelemetry/api";
package/dist/mod.cjs CHANGED
@@ -3,11 +3,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  require("./rolldown-runtime-Dmm3t92W.cjs");
4
4
  const require_transformers = require("./transformers-BalCrSsr.cjs");
5
5
  require("./compat/mod.cjs");
6
- const require_http = require("./http-Btzv2JZU.cjs");
7
- const require_federation = require("./federation-BW53Wxj7.cjs");
6
+ const require_http = require("./http-D1RPHoq3.cjs");
7
+ const require_federation = require("./federation-lzy7M3hT.cjs");
8
8
  const require_types = require("./types-poIao40f.cjs");
9
- const require_portable_collection = require("./portable-collection-CyTnj1m9.cjs");
10
- const require_kv_cache = require("./kv-cache-0qHe-sN1.cjs");
9
+ const require_portable_collection = require("./portable-collection-BvWxS1sL.cjs");
10
+ const require_kv_cache = require("./kv-cache-Jym5nP3J.cjs");
11
11
  require("./nodeinfo/mod.cjs");
12
12
  require("./runtime/mod.cjs");
13
13
  require("./sig/mod.cjs");
package/dist/mod.d.cts CHANGED
@@ -1,13 +1,13 @@
1
1
  /// <reference lib="esnext.temporal" />
2
2
  import { a as InboundService, c as OutboundService, d as Software, f as Usage, i as parseNodeInfo, l as Protocol, n as ParseNodeInfoOptions, o as JsonValue, p as nodeInfoToJson, r as getNodeInfo, s as NodeInfo, t as GetNodeInfoOptions, u as Services } from "./client-D-XP_Ccb.cjs";
3
- import { A as AcceptSignatureParameters, B as VerifyPortableObjectProofOptions, C as VerifyRequestDetailedResult, D as verifyRequest, E as signRequest, F as validateAcceptSignature, G as signObject, H as VerifyProofOptions, I as CreateProofOptions, J as verifyProof, K as verifyObject, L as SignObjectOptions, M as formatAcceptSignature, N as fulfillAcceptSignature, O as verifyRequestDetailed, P as parseAcceptSignature, R as VerifyObjectOptions, S as SignRequestOptions, T as VerifyRequestOptions, U as createProof, V as VerifyPortableObjectProofResult, W as hasProofLike, _ as InboxVerificationKey, a as KeyCache, b as HttpMessageSignaturesSpecDeterminer, c as fetchKeyDetailed, d as InboxProofPolicyFailureReason, f as InboxSignatureCheck, g as InboxVerificationFailureReason, h as InboxVerificationAttempt, i as FetchKeyResult, j as FulfillAcceptSignatureResult, k as AcceptSignatureMember, l as generateCryptoKeyPair, m as InboxSignatureIdentity, n as FetchKeyErrorResult, o as exportJwk, p as InboxSignatureFailureReason, q as verifyPortableObjectProof, r as FetchKeyOptions, s as fetchKey, t as FetchKeyDetailedResult, u as importJwk, w as VerifyRequestFailureReason, x as Rfc9421SignRequestOptions, y as HttpMessageSignaturesSpec, z as VerifyPortableObjectProofFailureReason } from "./key-DYxuyd-s.cjs";
3
+ import { A as AcceptSignatureParameters, B as VerifyPortableObjectProofOptions, C as VerifyRequestDetailedResult, D as verifyRequest, E as signRequest, F as validateAcceptSignature, G as signObject, H as VerifyProofOptions, I as CreateProofOptions, J as verifyProof, K as verifyObject, L as SignObjectOptions, M as formatAcceptSignature, N as fulfillAcceptSignature, O as verifyRequestDetailed, P as parseAcceptSignature, R as VerifyObjectOptions, S as SignRequestOptions, T as VerifyRequestOptions, U as createProof, V as VerifyPortableObjectProofResult, W as hasProofLike, _ as InboxVerificationKey, a as KeyCache, b as HttpMessageSignaturesSpecDeterminer, c as fetchKeyDetailed, d as InboxProofPolicyFailureReason, f as InboxSignatureCheck, g as InboxVerificationFailureReason, h as InboxVerificationAttempt, i as FetchKeyResult, j as FulfillAcceptSignatureResult, k as AcceptSignatureMember, l as generateCryptoKeyPair, m as InboxSignatureIdentity, n as FetchKeyErrorResult, o as exportJwk, p as InboxSignatureFailureReason, q as verifyPortableObjectProof, r as FetchKeyOptions, s as fetchKey, t as FetchKeyDetailedResult, u as importJwk, w as VerifyRequestFailureReason, x as Rfc9421SignRequestOptions, y as HttpMessageSignaturesSpec, z as VerifyPortableObjectProofFailureReason } from "./key-nYGY4QB9.cjs";
4
4
  import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "./owner-BF0L9cMt.cjs";
5
- import { $ as respondWithObject, $t as digest, A as InboxChallengePolicy, At as CustomCollectionDispatcher, B as createFederation, Bt as OutboxListener, C as FederationBenchmarkOptions, Ct as ActorKeyPairsDispatcher, D as FederationStartQueueOptions, Dt as CollectionDispatcher, E as FederationOptions, Et as CollectionCursor, F as PortableInboxForwardingOptions, Ft as MediaUploaderCallback, G as TaskEnqueueOptions, Gt as SharedInboxKeyDispatcher, H as createFederationBuilder, Ht as OutboxPermanentFailureHandler, I as Rfc6570Expression, It as NodeInfoDispatcher, J as CreateExponentialBackoffPolicyOptions, Jt as WebFingerLinksDispatcher, K as TaskHandler, Kt as UnverifiedActivityHandler, L as FederationKvPrefixes, Lt as ObjectAuthorizePredicate, M as MediaUploaderSetters, Mt as HashlinkMediaRequest, N as ObjectCallbackSetters, Nt as InboxErrorHandler, O as IdempotencyKeyCallback, Ot as CustomCollectionCounter, P as OutboxListenerSetters, Pt as InboxListener, Q as RespondWithObjectOptions, Qt as buildCollectionSynchronizationHeader, R as FederationOrigin, Rt as ObjectDispatcher, S as Federation, St as ActorHandleMapper, T as FederationFetchOptions, Tt as CollectionCounter, U as TaskDefinition, Ut as PortableActorIdMapper, V as Message, Vt as OutboxListenerErrorHandler, W as TaskDefinitionOptions, Wt as PortableCollectionOwnerMapper, X as RetryPolicy, Xt as SenderKeyPair, Y as RetryContext, Yt as SendActivityError, Z as createExponentialBackoffPolicy, Zt as PageItems, _ as ActorCallbackSetters, _t as NormalizedCircuitBreakerOptions, a as GetObjectOptions, an as InboxRequestReport, at as MessageQueueEnqueueOptions, b as CustomCollectionCallbackSetters, bt as ActorAliasMapper, c as IsSignedByAudienceOptions, ct as CircuitBreaker, d as ParseUriResult, dt as CircuitBreakerCreateOptions, en as ActivityTransformer, et as respondWithObjectIfAcceptable, f as PortableRequest, ft as CircuitBreakerFailurePolicy, g as SendActivityOptionsForCollection, gt as CircuitBreakerStateChange, h as SendActivityOptions, ht as CircuitBreakerState, i as GetActorOptions, in as InboxRequestOutcome, it as MessageQueueDepth, j as InboxListenerSetters, jt as HashlinkMediaDispatcher, k as IdempotencyStrategy, kt as CustomCollectionCursor, l as OutboxContext, lt as CircuitBreakerActivityDrop, m as RouteActivityOptions, mt as CircuitBreakerOptions, n as Context, nn as InboxJsonValue, nt as InProcessMessageQueueOptions, o as GetSignedKeyOptions, ot as MessageQueueListenOptions, p as RequestContext, pt as CircuitBreakerKvState, q as TaskRegistry, qt as UnverifiedActivityReason, r as ForwardActivityOptions, rn as InboxRequestFinishedHandler, rt as MessageQueue, s as InboxContext, st as ParallelMessageQueue, t as ActorKeyPair, tn as InboxAuthentication, tt as InProcessMessageQueue, u as ParseUriOptions, ut as CircuitBreakerBeforeSendDecision, v as CollectionCallbackSetters, vt as normalizeCircuitBreakerOptions, w as FederationBuilder, wt as AuthorizePredicate, x as Federatable, xt as ActorDispatcher, y as ConstructorWithTypeId, yt as parseCircuitBreakerKvState, z as FederationQueueOptions, zt as OutboxErrorHandler } from "./context-tsYPJ2Ew.cjs";
5
+ import { $ as respondWithObject, $t as digest, A as InboxChallengePolicy, At as CustomCollectionDispatcher, B as createFederation, Bt as OutboxListener, C as FederationBenchmarkOptions, Ct as ActorKeyPairsDispatcher, D as FederationStartQueueOptions, Dt as CollectionDispatcher, E as FederationOptions, Et as CollectionCursor, F as PortableInboxForwardingOptions, Ft as MediaUploaderCallback, G as TaskEnqueueOptions, Gt as SharedInboxKeyDispatcher, H as createFederationBuilder, Ht as OutboxPermanentFailureHandler, I as Rfc6570Expression, It as NodeInfoDispatcher, J as CreateExponentialBackoffPolicyOptions, Jt as WebFingerLinksDispatcher, K as TaskHandler, Kt as UnverifiedActivityHandler, L as FederationKvPrefixes, Lt as ObjectAuthorizePredicate, M as MediaUploaderSetters, Mt as HashlinkMediaRequest, N as ObjectCallbackSetters, Nt as InboxErrorHandler, O as IdempotencyKeyCallback, Ot as CustomCollectionCounter, P as OutboxListenerSetters, Pt as InboxListener, Q as RespondWithObjectOptions, Qt as buildCollectionSynchronizationHeader, R as FederationOrigin, Rt as ObjectDispatcher, S as Federation, St as ActorHandleMapper, T as FederationFetchOptions, Tt as CollectionCounter, U as TaskDefinition, Ut as PortableActorIdMapper, V as Message, Vt as OutboxListenerErrorHandler, W as TaskDefinitionOptions, Wt as PortableCollectionOwnerMapper, X as RetryPolicy, Xt as SenderKeyPair, Y as RetryContext, Yt as SendActivityError, Z as createExponentialBackoffPolicy, Zt as PageItems, _ as ActorCallbackSetters, _t as NormalizedCircuitBreakerOptions, a as GetObjectOptions, an as InboxRequestReport, at as MessageQueueEnqueueOptions, b as CustomCollectionCallbackSetters, bt as ActorAliasMapper, c as IsSignedByAudienceOptions, ct as CircuitBreaker, d as ParseUriResult, dt as CircuitBreakerCreateOptions, en as ActivityTransformer, et as respondWithObjectIfAcceptable, f as PortableRequest, ft as CircuitBreakerFailurePolicy, g as SendActivityOptionsForCollection, gt as CircuitBreakerStateChange, h as SendActivityOptions, ht as CircuitBreakerState, i as GetActorOptions, in as InboxRequestOutcome, it as MessageQueueDepth, j as InboxListenerSetters, jt as HashlinkMediaDispatcher, k as IdempotencyStrategy, kt as CustomCollectionCursor, l as OutboxContext, lt as CircuitBreakerActivityDrop, m as RouteActivityOptions, mt as CircuitBreakerOptions, n as Context, nn as InboxJsonValue, nt as InProcessMessageQueueOptions, o as GetSignedKeyOptions, ot as MessageQueueListenOptions, p as RequestContext, pt as CircuitBreakerKvState, q as TaskRegistry, qt as UnverifiedActivityReason, r as ForwardActivityOptions, rn as InboxRequestFinishedHandler, rt as MessageQueue, s as InboxContext, st as ParallelMessageQueue, t as ActorKeyPair, tn as InboxAuthentication, tt as InProcessMessageQueue, u as ParseUriOptions, ut as CircuitBreakerBeforeSendDecision, v as CollectionCallbackSetters, vt as normalizeCircuitBreakerOptions, w as FederationBuilder, wt as AuthorizePredicate, x as Federatable, xt as ActorDispatcher, y as ConstructorWithTypeId, yt as parseCircuitBreakerKvState, z as FederationQueueOptions, zt as OutboxErrorHandler } from "./context-BjD_CTxh.cjs";
6
6
  import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-B2mzK5tl.cjs";
7
7
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./compat/mod.cjs";
8
- import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-BojP2Bw3.cjs";
9
- import { a as CreateSignatureOptions, c as VerifySignatureOptions, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyPortableObject, l as attachSignature, m as verifyJsonLd, n as VerifyPortableObjectOptions, o as SignJsonLdOptions, p as signJsonLd, r as VerifyPortableObjectResult, s as VerifyJsonLdOptions, t as VerifyPortableObjectFailureReason, u as createSignature } from "./mod-CavhAgLw.cjs";
10
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-Dw-nPxQh.cjs";
8
+ import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-BBPd4M_0.cjs";
9
+ import { a as CreateSignatureOptions, c as VerifySignatureOptions, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyPortableObject, l as attachSignature, m as verifyJsonLd, n as VerifyPortableObjectOptions, o as SignJsonLdOptions, p as signJsonLd, r as VerifyPortableObjectResult, s as VerifyJsonLdOptions, t as VerifyPortableObjectFailureReason, u as createSignature } from "./mod-xAfaLS4T.cjs";
10
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-B5-wdzmJ.cjs";
11
11
  export * from "@fedify/vocab-runtime";
12
12
 
13
13
  //#region src/mod.d.ts
package/dist/mod.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /// <reference lib="esnext.temporal" />
2
2
  import { a as InboundService, c as OutboundService, d as Software, f as Usage, i as parseNodeInfo, l as Protocol, n as ParseNodeInfoOptions, o as JsonValue, p as nodeInfoToJson, r as getNodeInfo, s as NodeInfo, t as GetNodeInfoOptions, u as Services } from "./client-D-XP_Ccb.js";
3
- import { A as AcceptSignatureParameters, B as VerifyPortableObjectProofOptions, C as VerifyRequestDetailedResult, D as verifyRequest, E as signRequest, F as validateAcceptSignature, G as signObject, H as VerifyProofOptions, I as CreateProofOptions, J as verifyProof, K as verifyObject, L as SignObjectOptions, M as formatAcceptSignature, N as fulfillAcceptSignature, O as verifyRequestDetailed, P as parseAcceptSignature, R as VerifyObjectOptions, S as SignRequestOptions, T as VerifyRequestOptions, U as createProof, V as VerifyPortableObjectProofResult, W as hasProofLike, _ as InboxVerificationKey, a as KeyCache, b as HttpMessageSignaturesSpecDeterminer, c as fetchKeyDetailed, d as InboxProofPolicyFailureReason, f as InboxSignatureCheck, g as InboxVerificationFailureReason, h as InboxVerificationAttempt, i as FetchKeyResult, j as FulfillAcceptSignatureResult, k as AcceptSignatureMember, l as generateCryptoKeyPair, m as InboxSignatureIdentity, n as FetchKeyErrorResult, o as exportJwk, p as InboxSignatureFailureReason, q as verifyPortableObjectProof, r as FetchKeyOptions, s as fetchKey, t as FetchKeyDetailedResult, u as importJwk, w as VerifyRequestFailureReason, x as Rfc9421SignRequestOptions, y as HttpMessageSignaturesSpec, z as VerifyPortableObjectProofFailureReason } from "./key-C1nv7_jD.js";
3
+ import { A as AcceptSignatureParameters, B as VerifyPortableObjectProofOptions, C as VerifyRequestDetailedResult, D as verifyRequest, E as signRequest, F as validateAcceptSignature, G as signObject, H as VerifyProofOptions, I as CreateProofOptions, J as verifyProof, K as verifyObject, L as SignObjectOptions, M as formatAcceptSignature, N as fulfillAcceptSignature, O as verifyRequestDetailed, P as parseAcceptSignature, R as VerifyObjectOptions, S as SignRequestOptions, T as VerifyRequestOptions, U as createProof, V as VerifyPortableObjectProofResult, W as hasProofLike, _ as InboxVerificationKey, a as KeyCache, b as HttpMessageSignaturesSpecDeterminer, c as fetchKeyDetailed, d as InboxProofPolicyFailureReason, f as InboxSignatureCheck, g as InboxVerificationFailureReason, h as InboxVerificationAttempt, i as FetchKeyResult, j as FulfillAcceptSignatureResult, k as AcceptSignatureMember, l as generateCryptoKeyPair, m as InboxSignatureIdentity, n as FetchKeyErrorResult, o as exportJwk, p as InboxSignatureFailureReason, q as verifyPortableObjectProof, r as FetchKeyOptions, s as fetchKey, t as FetchKeyDetailedResult, u as importJwk, w as VerifyRequestFailureReason, x as Rfc9421SignRequestOptions, y as HttpMessageSignaturesSpec, z as VerifyPortableObjectProofFailureReason } from "./key-DhsBxxZN.js";
4
4
  import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "./owner-BSzr5-I8.js";
5
- import { $ as respondWithObject, $t as digest, A as InboxChallengePolicy, At as CustomCollectionDispatcher, B as createFederation, Bt as OutboxListener, C as FederationBenchmarkOptions, Ct as ActorKeyPairsDispatcher, D as FederationStartQueueOptions, Dt as CollectionDispatcher, E as FederationOptions, Et as CollectionCursor, F as PortableInboxForwardingOptions, Ft as MediaUploaderCallback, G as TaskEnqueueOptions, Gt as SharedInboxKeyDispatcher, H as createFederationBuilder, Ht as OutboxPermanentFailureHandler, I as Rfc6570Expression, It as NodeInfoDispatcher, J as CreateExponentialBackoffPolicyOptions, Jt as WebFingerLinksDispatcher, K as TaskHandler, Kt as UnverifiedActivityHandler, L as FederationKvPrefixes, Lt as ObjectAuthorizePredicate, M as MediaUploaderSetters, Mt as HashlinkMediaRequest, N as ObjectCallbackSetters, Nt as InboxErrorHandler, O as IdempotencyKeyCallback, Ot as CustomCollectionCounter, P as OutboxListenerSetters, Pt as InboxListener, Q as RespondWithObjectOptions, Qt as buildCollectionSynchronizationHeader, R as FederationOrigin, Rt as ObjectDispatcher, S as Federation, St as ActorHandleMapper, T as FederationFetchOptions, Tt as CollectionCounter, U as TaskDefinition, Ut as PortableActorIdMapper, V as Message, Vt as OutboxListenerErrorHandler, W as TaskDefinitionOptions, Wt as PortableCollectionOwnerMapper, X as RetryPolicy, Xt as SenderKeyPair, Y as RetryContext, Yt as SendActivityError, Z as createExponentialBackoffPolicy, Zt as PageItems, _ as ActorCallbackSetters, _t as NormalizedCircuitBreakerOptions, a as GetObjectOptions, an as InboxRequestReport, at as MessageQueueEnqueueOptions, b as CustomCollectionCallbackSetters, bt as ActorAliasMapper, c as IsSignedByAudienceOptions, ct as CircuitBreaker, d as ParseUriResult, dt as CircuitBreakerCreateOptions, en as ActivityTransformer, et as respondWithObjectIfAcceptable, f as PortableRequest, ft as CircuitBreakerFailurePolicy, g as SendActivityOptionsForCollection, gt as CircuitBreakerStateChange, h as SendActivityOptions, ht as CircuitBreakerState, i as GetActorOptions, in as InboxRequestOutcome, it as MessageQueueDepth, j as InboxListenerSetters, jt as HashlinkMediaDispatcher, k as IdempotencyStrategy, kt as CustomCollectionCursor, l as OutboxContext, lt as CircuitBreakerActivityDrop, m as RouteActivityOptions, mt as CircuitBreakerOptions, n as Context, nn as InboxJsonValue, nt as InProcessMessageQueueOptions, o as GetSignedKeyOptions, ot as MessageQueueListenOptions, p as RequestContext, pt as CircuitBreakerKvState, q as TaskRegistry, qt as UnverifiedActivityReason, r as ForwardActivityOptions, rn as InboxRequestFinishedHandler, rt as MessageQueue, s as InboxContext, st as ParallelMessageQueue, t as ActorKeyPair, tn as InboxAuthentication, tt as InProcessMessageQueue, u as ParseUriOptions, ut as CircuitBreakerBeforeSendDecision, v as CollectionCallbackSetters, vt as normalizeCircuitBreakerOptions, w as FederationBuilder, wt as AuthorizePredicate, x as Federatable, xt as ActorDispatcher, y as ConstructorWithTypeId, yt as parseCircuitBreakerKvState, z as FederationQueueOptions, zt as OutboxErrorHandler } from "./context-7NyiqIcg.js";
5
+ import { $ as respondWithObject, $t as digest, A as InboxChallengePolicy, At as CustomCollectionDispatcher, B as createFederation, Bt as OutboxListener, C as FederationBenchmarkOptions, Ct as ActorKeyPairsDispatcher, D as FederationStartQueueOptions, Dt as CollectionDispatcher, E as FederationOptions, Et as CollectionCursor, F as PortableInboxForwardingOptions, Ft as MediaUploaderCallback, G as TaskEnqueueOptions, Gt as SharedInboxKeyDispatcher, H as createFederationBuilder, Ht as OutboxPermanentFailureHandler, I as Rfc6570Expression, It as NodeInfoDispatcher, J as CreateExponentialBackoffPolicyOptions, Jt as WebFingerLinksDispatcher, K as TaskHandler, Kt as UnverifiedActivityHandler, L as FederationKvPrefixes, Lt as ObjectAuthorizePredicate, M as MediaUploaderSetters, Mt as HashlinkMediaRequest, N as ObjectCallbackSetters, Nt as InboxErrorHandler, O as IdempotencyKeyCallback, Ot as CustomCollectionCounter, P as OutboxListenerSetters, Pt as InboxListener, Q as RespondWithObjectOptions, Qt as buildCollectionSynchronizationHeader, R as FederationOrigin, Rt as ObjectDispatcher, S as Federation, St as ActorHandleMapper, T as FederationFetchOptions, Tt as CollectionCounter, U as TaskDefinition, Ut as PortableActorIdMapper, V as Message, Vt as OutboxListenerErrorHandler, W as TaskDefinitionOptions, Wt as PortableCollectionOwnerMapper, X as RetryPolicy, Xt as SenderKeyPair, Y as RetryContext, Yt as SendActivityError, Z as createExponentialBackoffPolicy, Zt as PageItems, _ as ActorCallbackSetters, _t as NormalizedCircuitBreakerOptions, a as GetObjectOptions, an as InboxRequestReport, at as MessageQueueEnqueueOptions, b as CustomCollectionCallbackSetters, bt as ActorAliasMapper, c as IsSignedByAudienceOptions, ct as CircuitBreaker, d as ParseUriResult, dt as CircuitBreakerCreateOptions, en as ActivityTransformer, et as respondWithObjectIfAcceptable, f as PortableRequest, ft as CircuitBreakerFailurePolicy, g as SendActivityOptionsForCollection, gt as CircuitBreakerStateChange, h as SendActivityOptions, ht as CircuitBreakerState, i as GetActorOptions, in as InboxRequestOutcome, it as MessageQueueDepth, j as InboxListenerSetters, jt as HashlinkMediaDispatcher, k as IdempotencyStrategy, kt as CustomCollectionCursor, l as OutboxContext, lt as CircuitBreakerActivityDrop, m as RouteActivityOptions, mt as CircuitBreakerOptions, n as Context, nn as InboxJsonValue, nt as InProcessMessageQueueOptions, o as GetSignedKeyOptions, ot as MessageQueueListenOptions, p as RequestContext, pt as CircuitBreakerKvState, q as TaskRegistry, qt as UnverifiedActivityReason, r as ForwardActivityOptions, rn as InboxRequestFinishedHandler, rt as MessageQueue, s as InboxContext, st as ParallelMessageQueue, t as ActorKeyPair, tn as InboxAuthentication, tt as InProcessMessageQueue, u as ParseUriOptions, ut as CircuitBreakerBeforeSendDecision, v as CollectionCallbackSetters, vt as normalizeCircuitBreakerOptions, w as FederationBuilder, wt as AuthorizePredicate, x as Federatable, xt as ActorDispatcher, y as ConstructorWithTypeId, yt as parseCircuitBreakerKvState, z as FederationQueueOptions, zt as OutboxErrorHandler } from "./context-C2-UDo2c.js";
6
6
  import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-B2mzK5tl.js";
7
7
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./compat/mod.js";
8
- import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-Xj5P4s4d.js";
9
- import { a as CreateSignatureOptions, c as VerifySignatureOptions, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyPortableObject, l as attachSignature, m as verifyJsonLd, n as VerifyPortableObjectOptions, o as SignJsonLdOptions, p as signJsonLd, r as VerifyPortableObjectResult, s as VerifyJsonLdOptions, t as VerifyPortableObjectFailureReason, u as createSignature } from "./mod-CtpF2BU5.js";
10
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-DEZXwV6J.js";
8
+ import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-CUYBGKof.js";
9
+ import { a as CreateSignatureOptions, c as VerifySignatureOptions, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyPortableObject, l as attachSignature, m as verifyJsonLd, n as VerifyPortableObjectOptions, o as SignJsonLdOptions, p as signJsonLd, r as VerifyPortableObjectResult, s as VerifyJsonLdOptions, t as VerifyPortableObjectFailureReason, u as createSignature } from "./mod-BRpER-B0.js";
10
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-DkhfZC1u.js";
11
11
  export * from "@fedify/vocab-runtime";
12
12
 
13
13
  //#region src/mod.d.ts
package/dist/mod.js CHANGED
@@ -3,11 +3,11 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import "./rolldown-runtime-BC-Eo5Mj.js";
4
4
  import { n as autoIdAssigner, r as getDefaultActivityTransformers, t as actorDehydrator } from "./transformers-DAtXl_Kc.js";
5
5
  import "./compat/mod.js";
6
- import { D as createSignature, H as fetchKeyDetailed, I as verifyJsonLd, L as verifySignature, O as detachSignature, P as signJsonLd, T as attachSignature, U as generateCryptoKeyPair, V as fetchKey, W as importJwk, _ as verifyObject, _t as validateAcceptSignature, a as signRequest, c as verifyRequestDetailed, gt as parseAcceptSignature, h as signObject, ht as fulfillAcceptSignature, j as hasSignatureLike, m as hasProofLike, mt as formatAcceptSignature, p as createProof, s as verifyRequest, v as verifyPortableObjectProof, x as verifyProof, z as exportJwk } from "./http-Cg5Yj_yk.js";
7
- import { a as respondWithObjectIfAcceptable, c as digest, d as parseCircuitBreakerKvState, f as createFederationBuilder, i as respondWithObject, l as CircuitBreaker, n as handleWebFinger, o as SendActivityError, r as createExponentialBackoffPolicy, s as buildCollectionSynchronizationHeader, t as createFederation, u as normalizeCircuitBreakerOptions } from "./middleware-BYOXwJvI.js";
6
+ import { A as detachSignature, C as verifyProof, D as attachSignature, G as generateCryptoKeyPair, I as signJsonLd, K as importJwk, N as hasSignatureLike, R as verifyJsonLd, U as fetchKey, V as exportJwk, W as fetchKeyDetailed, _t as fulfillAcceptSignature, a as signRequest, c as verifyRequestDetailed, g as signObject, gt as formatAcceptSignature, k as createSignature, m as hasProofLike, p as createProof, s as verifyRequest, v as verifyObject, vt as parseAcceptSignature, y as verifyPortableObjectProof, yt as validateAcceptSignature, z as verifySignature } from "./http-Cmz7x6Iw.js";
7
+ import { a as respondWithObjectIfAcceptable, c as digest, d as parseCircuitBreakerKvState, f as createFederationBuilder, i as respondWithObject, l as CircuitBreaker, n as handleWebFinger, o as SendActivityError, r as createExponentialBackoffPolicy, s as buildCollectionSynchronizationHeader, t as createFederation, u as normalizeCircuitBreakerOptions } from "./middleware-CqgRIsWM.js";
8
8
  import { n as getNodeInfo, r as parseNodeInfo, t as nodeInfoToJson } from "./types-_S2_MeLF.js";
9
- import { n as doesActorOwnKey, r as getKeyOwner, t as verifyPortableObject } from "./portable-collection-Dhg0By3t.js";
10
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-CamfvHLY.js";
9
+ import { n as doesActorOwnKey, r as getKeyOwner, t as verifyPortableObject } from "./portable-collection-DwQT28O2.js";
10
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-C0-HuvwP.js";
11
11
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError } from "./federation/mod.js";
12
12
  import "./nodeinfo/mod.js";
13
13
  import "./runtime/mod.js";
@@ -5,7 +5,7 @@ import { r as createRequestContext } from "../context-8Tu9kea0.mjs";
5
5
  import { t as MemoryKvStore } from "../kv-DCHkaJ9-.mjs";
6
6
  import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
7
7
  import "../std__assert-DvMDRPes.mjs";
8
- import { D as handleNodeInfoJrd, E as handleNodeInfo, o as createFederation } from "../middleware-Hl0lTClT.mjs";
8
+ import { D as handleNodeInfoJrd, E as handleNodeInfo, o as createFederation } from "../middleware-BbBsa5iR.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  //#region src/nodeinfo/handler.test.ts
11
11
  test("handleNodeInfo()", async () => {
@@ -2,10 +2,10 @@ import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { d as isPortableUri, l as isPortableId, n as getCanonicalPortableId, p as isSamePublicKey$1, s as isCompatibleKeyId } from "./portable-key-id-Ca30-hOa.mjs";
5
- import { n as version, t as name } from "./deno-Bp8q024B.mjs";
5
+ import { n as version, t as name } from "./deno-Ci6tSK9-.mjs";
6
6
  import { i as parseKeyOwnerEvidence, r as getVerifiedKeyOwnerEvidence } from "./key-owner-evidence-APB6NpSk.mjs";
7
- import { l as verifyKeyOwnership, n as exportJwk, r as fetchActorDocument } from "./key-R5cUSA6S.mjs";
8
- import { n as resolvePortableActorKey, t as fetchPortableGatewayKey } from "./portable-key-BOBhrrKN.mjs";
7
+ import { E as verifyKeyOwnership, b as fetchActorDocument, y as exportJwk } from "./ld-DJ--ZUpr.mjs";
8
+ import { n as resolvePortableActorKey, t as fetchPortableGatewayKey } from "./portable-key-Cwti99nP.mjs";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
11
11
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1,5 +1,5 @@
1
1
  const { URLPattern } = require("urlpattern-polyfill");
2
- const require_http = require("./http-Btzv2JZU.cjs");
2
+ const require_http = require("./http-D1RPHoq3.cjs");
3
3
  let _logtape_logtape = require("@logtape/logtape");
4
4
  let _fedify_vocab = require("@fedify/vocab");
5
5
  let _opentelemetry_api = require("@opentelemetry/api");
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { At as isPortableUri, B as fetchActorDocument, Dt as isCompatibleKeyId, J as getVerifiedKeyOwnerEvidence, K as verifyKeyOwnership, Mt as isSamePublicKey$1, Nt as name, Ot as isPortableId, Pt as version, St as getCanonicalPortableId, Y as parseKeyOwnerEvidence, b as verifyPortableObjectProofWithRoot, l as fetchPortableGatewayKey, u as resolvePortableActorKey, v as verifyPortableObjectProof, z as exportJwk } from "./http-Cg5Yj_yk.js";
3
+ import { At as isPortableId, Ft as name, H as fetchActorDocument, It as version, J as verifyKeyOwnership, Mt as isPortableUri, Pt as isSamePublicKey$1, V as exportJwk, X as getVerifiedKeyOwnerEvidence, Z as parseKeyOwnerEvidence, kt as isCompatibleKeyId, l as fetchPortableGatewayKey, u as resolvePortableActorKey, wt as getCanonicalPortableId, x as verifyPortableObjectProofWithRoot, y as verifyPortableObjectProof } from "./http-Cmz7x6Iw.js";
4
4
  import { getLogger } from "@logtape/logtape";
5
5
  import { CollectionPage, CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
6
6
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1,8 +1,8 @@
1
1
  import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-Bp8q024B.mjs";
5
- import { c as verifyPortableObjectProof, u as verifyPortableObjectProofWithRoot } from "./proof-BGyUYuOb.mjs";
4
+ import { n as version, t as name } from "./deno-Ci6tSK9-.mjs";
5
+ import { d as verifyPortableObjectProofWithRoot, l as verifyPortableObjectProof } from "./proof-Bwzv6mXZ.mjs";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { CollectionPage, Object as Object$1, isActor } from "@fedify/vocab";
8
8
  import { trace } from "@opentelemetry/api";
@@ -2,7 +2,7 @@ import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { a as getRawCanonicalPortableId, c as isPortableActorDocument, d as isPortableUri, n as getCanonicalPortableId, p as isSamePublicKey } from "./portable-key-id-Ca30-hOa.mjs";
5
- import { u as verifyPortableObjectProofWithRoot } from "./proof-BGyUYuOb.mjs";
5
+ import { d as verifyPortableObjectProofWithRoot } from "./proof-Bwzv6mXZ.mjs";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { CryptographicKey, Multikey, Object as Object$1 } from "@fedify/vocab";
8
8
  import { FetchError, formatIri, getDocumentLoader, isGatewayUrl, parseIri, toCompatibleEf61Id } from "@fedify/vocab-runtime";
@@ -3,12 +3,11 @@ import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { i as getPortableDid, l as isPortableId } from "./portable-key-id-Ca30-hOa.mjs";
5
5
  import { a as verificationObservation, i as triedKey, n as observeCheck, t as observeAttempt } from "./verification-Dpfcw8ml.mjs";
6
- import { n as version, t as name } from "./deno-Bp8q024B.mjs";
7
- import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-DUdlIyrB.mjs";
8
- import { c as validateCryptoKey, i as fetchKey, t as bypassKeyCacheReads } from "./key-R5cUSA6S.mjs";
6
+ import { n as version, t as name } from "./deno-Ci6tSK9-.mjs";
7
+ import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-Dwgav7s_.mjs";
8
+ import { T as validateCryptoKey, c as getNormalizationContextLoader, v as bypassKeyCacheReads, x as fetchKey } from "./ld-DJ--ZUpr.mjs";
9
9
  import { n as preloadedOnlyDocumentLoader } from "./public-audience--klBIOk1.mjs";
10
10
  import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-4IJqPYos.mjs";
11
- import { c as getNormalizationContextLoader } from "./ld-B6RQHcnq.mjs";
12
11
  import { getLogger } from "@logtape/logtape";
13
12
  import { Activity, DataIntegrityProof, Multikey, getTypeId } from "@fedify/vocab";
14
13
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1032,34 +1031,68 @@ async function preparePortableObjectProof(jsonLd, options) {
1032
1031
  };
1033
1032
  }
1034
1033
  /**
1035
- * Applies portable-object proof policy to one map-local cryptographic result.
1034
+ * Checks portable-object policy without resolving keys or verifying signatures.
1036
1035
  *
1037
1036
  * @internal
1038
1037
  */
1039
- async function verifyPortableObjectProofPolicy(jsonLd, key, options = {}) {
1038
+ async function preparePortableObjectProofPolicy(jsonLd, options = {}) {
1040
1039
  const policyOptions = {
1041
1040
  ...options,
1042
1041
  contextLoader: preloadedOnlyDocumentLoader
1043
1042
  };
1044
1043
  const prepared = await preparePortableObjectProof(jsonLd, policyOptions);
1045
- if (!prepared.prepared) return prepared.result;
1044
+ if (!prepared.prepared) return {
1045
+ prepared: false,
1046
+ result: prepared.result
1047
+ };
1046
1048
  const policyProof = prepared.proofs[0];
1047
1049
  const literalProof = isJsonLdNode(jsonLd) && isJsonLdNode(jsonLd.proof) ? (await parseRawProofCandidates(jsonLd, [jsonLd.proof], policyOptions, prepared.proofContextLoader))[0]?.proof : null;
1048
1050
  const verificationMethod = policyProof?.verificationMethodId;
1049
- if (prepared.proofs.length !== 1 || key == null || policyProof == null || literalProof == null || !sameProof(policyProof, literalProof) || verificationMethod == null || key.id?.href !== verificationMethod.href) return {
1051
+ if (prepared.proofs.length !== 1 || policyProof == null || literalProof == null || !sameProof(policyProof, literalProof) || verificationMethod == null) return {
1052
+ prepared: false,
1053
+ result: {
1054
+ verified: false,
1055
+ reason: {
1056
+ type: "invalidProof",
1057
+ proofIndex: prepared.proofs.length > 1 ? 1 : 0
1058
+ }
1059
+ }
1060
+ };
1061
+ return {
1062
+ prepared: true,
1063
+ verificationMethod,
1064
+ objectId: formatIri(prepared.objectId)
1065
+ };
1066
+ }
1067
+ /**
1068
+ * Binds prepared portable-object policy to the map-local verified key.
1069
+ *
1070
+ * @internal
1071
+ */
1072
+ function verifyPreparedPortableObjectProofPolicy(prepared, key) {
1073
+ if (key == null || key.id?.href !== prepared.verificationMethod.href) return {
1050
1074
  verified: false,
1051
1075
  reason: {
1052
1076
  type: "invalidProof",
1053
- proofIndex: prepared.proofs.length > 1 ? 1 : 0
1077
+ proofIndex: 0
1054
1078
  }
1055
1079
  };
1056
1080
  return {
1057
1081
  verified: true,
1058
1082
  keys: [key],
1059
- objectId: formatIri(prepared.objectId)
1083
+ objectId: prepared.objectId
1060
1084
  };
1061
1085
  }
1062
1086
  /**
1087
+ * Applies portable-object proof policy to one map-local cryptographic result.
1088
+ *
1089
+ * @internal
1090
+ */
1091
+ async function verifyPortableObjectProofPolicy(jsonLd, key, options = {}) {
1092
+ const prepared = await preparePortableObjectProofPolicy(jsonLd, options);
1093
+ return prepared.prepared ? verifyPreparedPortableObjectProofPolicy(prepared, key) : prepared.result;
1094
+ }
1095
+ /**
1063
1096
  * Verifies the FEP-ef61 Object Integrity Proof policy for a portable object.
1064
1097
  *
1065
1098
  * This applies the FEP-2277 core-type classification to the top-level JSON-LD
@@ -1296,4 +1329,4 @@ function hasCryptographicOrigin(iri) {
1296
1329
  return /^did:/i.test(iri) || /^ap(?:\+ef61)?:\/\//i.test(iri);
1297
1330
  }
1298
1331
  //#endregion
1299
- export { signObject as a, verifyPortableObjectProof as c, verifyProof as d, hasProofLike as i, verifyPortableObjectProofPolicy as l, classifyFep2277CoreType as n, verifyMapLocalProof as o, createProof as r, verifyObject as s, InvalidPortableObjectIdError as t, verifyPortableObjectProofWithRoot as u };
1332
+ export { preparePortableObjectProofPolicy as a, verifyObject as c, verifyPortableObjectProofWithRoot as d, verifyPreparedPortableObjectProofPolicy as f, hasProofLike as i, verifyPortableObjectProof as l, classifyFep2277CoreType as n, signObject as o, verifyProof as p, createProof as r, verifyMapLocalProof as s, InvalidPortableObjectIdError as t, verifyPortableObjectProofPolicy as u };
@@ -2,9 +2,9 @@ import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { d as isPortableUri } from "./portable-key-id-Ca30-hOa.mjs";
5
- import { n as version, t as name } from "./deno-Bp8q024B.mjs";
6
- import { n as getDurationMs, r as getFederationMetrics } from "./metrics-DUdlIyrB.mjs";
7
- import { n as doubleKnock } from "./http-D6JDnBO1.mjs";
5
+ import { n as version, t as name } from "./deno-Ci6tSK9-.mjs";
6
+ import { n as getDurationMs, r as getFederationMetrics } from "./metrics-Dwgav7s_.mjs";
7
+ import { n as doubleKnock } from "./http-CFyizTHa.mjs";
8
8
  import { getLogger, withContext } from "@logtape/logtape";
9
9
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { FetchError, UrlError, canonicalizePortableUri, getFe34Origin, isGatewayUrl, toCompatibleEf61Id, validatePublicUrl } from "@fedify/vocab-runtime";
@@ -3,7 +3,7 @@ import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
5
5
  import "../std__assert-DvMDRPes.mjs";
6
- import { a as inspectCompoundPortableObjectApplicability, n as discoverCompoundProofDocuments } from "../compound-proof-D03g5HXz.mjs";
6
+ import { a as inspectCompoundPortableObjectApplicability, n as discoverCompoundProofDocuments } from "../compound-proof-DtmVrMV7.mjs";
7
7
  import { t as map_local_create_note_default } from "../map-local-create-note-B0SeXJms.mjs";
8
8
  import { test } from "@fedify/fixture";
9
9
  //#region src/sig/compound-proof-discovery.test.ts
@@ -3,7 +3,7 @@ import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
5
5
  import "../std__assert-DvMDRPes.mjs";
6
- import { a as inspectCompoundPortableObjectApplicability, i as findUnsupportedCompoundProofShape, t as containsCompoundPortableObject } from "../compound-proof-D03g5HXz.mjs";
6
+ import { a as inspectCompoundPortableObjectApplicability, i as findUnsupportedCompoundProofShape, t as containsCompoundPortableObject } from "../compound-proof-DtmVrMV7.mjs";
7
7
  import { test } from "@fedify/fixture";
8
8
  //#region src/sig/compound-proof-producer.test.ts
9
9
  const portableId = "ap+ef61://did:key:z6MkAlice/objects/1";